43 ist ein Integerliteral und das gleiche wie (int)43.
Man möchte natürlich schreiben können
byte b = 43;
ohne jedesmal casten zu müssen:
byte b = (byte)43;
Das sollte es erklären.
Hallo Dravere
Etwas mehr Geduld wäre vielleicht angebracht
Ok. Ich versuchs :-). Nach 2-3 Stunden finde ich dann halt meistens selber eine Lösung. Wobei ich die Eingangsfrage ja schon am 08.04 gestellt habe.
Und in meiner ersten Frage habe ich dabei nicht mal auf die Behaviors von Expression Blend hingeweisen.
Aber:
Vielen Dank für deine Lösung. Ich werde das mal testen. Das mit den Attached Behavoirs war mir nicht klar dass man die so binden kann.
Hallo zusammen,
Einem ListViewItem Style mit gesetzter Template Property spendiere ich folgende Trigger:
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=(ListViewItem.IsSelected)}" Value="True">
<DataTrigger.Setters>
<Setter TargetName="TemplateParent" Property="Background" Value="LightGray" />
Der im Template enthaltene Border soll also bei IsSelected == true einen grauen Hintergrund annehmen.
Nun mache ich folgendes:
<EventTrigger RoutedEvent="DragEnter" SourceName="TemplateParent">
<EventTrigger.Actions>
<BeginStoryboard >
<Storyboard >
<ColorAnimation Storyboard.TargetName="TemplateParent" Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
To="Red" Duration="0:0:0.4" AutoReverse="False"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="DragLeave" SourceName="TemplateParent" >
<EventTrigger.Actions>
<BeginStoryboard >
<Storyboard>
<ColorAnimation Storyboard.TargetName="TemplateParent" Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
To="White" Duration="0:0:1" AutoReverse="False" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
Soweit alles okay.
Ist ein Item nun Selektiert und der EventSetter "DragEnter" greift läuft alles wie gewollt. Beim greifen des "DragLeave" Setters wird die Border.Background Property logischerweise nach "White" animiert.
Wie muss ich vorgehen, dass ein selektiertes Item nach "LightGray" animiert wird - da ich die To Property der Animation ja scheinbar nicht binden kann ?!
Also.
Es funktioniert wie folgt:
Usercontrol
<TextBox Name="tb"
Text="{Binding Text,
ElementName=LabelTextBoxControl}"
Validation.ValidationAdornerSiteFor="{Binding ElementName=LabelTextBoxControl}">
Verwendung:
<MyUserControl Text={ValidationBinding Name>
Hier die Links dazu die geholfen haben:
http://stackoverflow.com/questions/1094509/wpf-define-bindings-default
http://msdn.microsoft.com/de-de/library/system.windows.controls.validation.validationadornersitefor(v=vs.100).aspx
xPaFFx schrieb:
Klar könnte ich per Holzhammermethode die Suite als eigene Anwendung realisieren die dann einfach entsprechend die anderen Exen bzw xls per Kommando aufruft.
Aber geht das irgendwie auch eleganter?
Was ist daran unelegant?
Du hast mehrere Programme und möchtest Die komfortabel per Knopfdruck starten. Hört sich nach 10 Minuten Aufwand an.
Vielleicht übersehe ich aber auch eine wichtige Anforderung und Du beschreibst nochmal genauer, wo das Problem liegt
Servus,
folgender Code:
ProcessStartInfo startInfo = new ProcessStartInfo("powershell.exe");
startInfo.Arguments = "\"C:\\Ordner 1\\script.ps1\"";
Die Powershell erkennt den Pfad durch das enthaltene Whitespace wohl als zwei Argumente:
Die Benennung "C:\Ordner" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausfhrbaren Programms erkannt.
Was tun?
EDIT: Habe eine entsprechende Anleitung gefunden:
http://forloveofsoftware.blogspot.de/2009/04/calling-powershell-script-in-path-with.html
http://www.vbusers.com/codecsharp/codeget.asp?ThreadID=71&PostID=1
Funktioniert allerdings nicht mit eMail-Clients die keine MAPI-Unterstützung mitbringen, dann ist man bzgl. Anhang aber ohnehin aufgeschmissen.
SmtpClient ist zwar recht einfach, hilft aber nicht weiter wenn die eMail über das eMail-Postfach des Nutzers rausgehen soll (sofern man sie ihn nicht nochmal im Programm irgendwo eintippen lässt)
Hier mal ein Beispiel zu einer Prozedur mit Übergabeparameter(Firebird)
CREATE PROCEDURE "DeineProzedur"(iId bigint not null)
returns (CollectionId bigint, CollectionFr bigint)
as
begin
FOR SELECT co.id,
cost.cFrance,
FROM tbl_collection co
JOIN tbl_collectionstatus cost ON cost.collectionstatus = co.collectionstatus
WHERE co.id = :iId
INTO :CollectionId,
:CollectionFr,
DO BEGIN
suspend;
END
END
Dein C# COde
public static List<Collection> GetCollectionInfo(int iId)
{
try
{
using (dbEntities ctx = new dbEntities())
{
return(ctx.ExecuteStoreQuery<Collection>("SELECT * FROM DeineProzedur(%1)").ToList();
}
}......
}
Verstanden?
Besten Dank, hab gestern noch eine alternative herausgefunden, diese wäre aber auch etwas aufwendiger. Ich könnte das eigentliche UserControl auch auf AutoScrollable setzen und das innere Panel händisch von der Größe neu Berechnen. Dies müsste ich halt jedes mal beim Verschieben von Controls machen. Damit wären die positionen Fix. Der Aufwand aber auch etwas höher.
Hast du die Assembly "System.Windows.Forms.DataVisualization.dll" denn auch als Referenz bei deinem Projekt eingebunden (s. http://msdn.microsoft.com/de-de/library/system.windows.forms.datavisualization.charting.chart.aspx)
Das fehlt ein "s" im Fontnamen: "Microsoft Sans Serif"
Sonst wird halt ein Default-Font gewählt.
Edit: Um nicht explizit einen Fontnamen zu wählen, der evtl. auf dem System nicht vorhanden ist, kann man auch einfach die FontFamily.GenericSansSerif-Eigenschaft benutzen. Für eine bestimmte Größe und/oder Style dann z.B.
new Font(FontFamily.GenericSansSerif, 10);
new Font(FontFamily.GenericSansSerif, 10, FontStyle.Italic);
verwenden.
Desweiteren gibt es noch FontFamily.GenericMonospace sowie FontFamily.GenericSerif...
Hallo,
ich versuche seit Neuestem das MVVM-Pattern für meine Windows 8 App / Windows 8 Phone App zu verwenden.
Leider bin ich auf das Problem gestoßen, dass ich bei Klick auf einem Button nicht die View in den ContentController laden kann. Meine Struktur sieht so aus:
Projekt Portable Class Library (Abgekürzt Mvvm.PCL)
MainViewModel.cs
ViewModelLocator.cs
Projekt Windows 8 Phone (Abgekürzt Mvvm.Phone) (deaktiviert)
Projekt Windows 8 App (Abgekürzt Mvvm.Store)
MainView.xaml
SecondView.xaml
ThirdView.xaml
MainPage.xaml
MainPage.xaml beinhaltet eine AppBar mit Buttons und einen ContentController. Der ContentController soll die Views beinhalten.
Das ist die MainPage.xaml
Hier sieht man, dass ich bei den Buttons ein Command versuche (welches jedoch nicht funktioniert). Bei Klick auf dem Button soll sich die View im ContentControl dementsprechend anpassen (indem es in die MainViewModel.cs geht).
Beim Laden der MainPage soll als Anfangs-View die MainView.xaml verwendet werden (funktioniert auch nicht).
Mehr kann jedoch in der ReadMe.txt, welche unten als Download vorhanden ist, gelesen werden.
<Page
x:Name="pageRoot"
x:Class="Mvvm.Store.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Mvvm.Store"
xmlns:common="using:Mvvm.Store.Common"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
DataContext="{Binding Main, Source={StaticResource Locator}}">
<Grid Style="{StaticResource LayoutRootStyle}">
<Grid.RowDefinitions>
<!-- View -->
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- ContentControl should have MainView as first page on startup -->
<ContentControl Name="MyContentControl" Grid.Row="0" Content="{Binding CurrentView}" IsTabStop="False" Margin="10" />
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ApplicationViewStates">
<VisualState x:Name="FullScreenLandscape"/>
<VisualState x:Name="Filled"/>
<VisualState x:Name="FullScreenPortrait">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="itemGridView" Storyboard.TargetProperty="Padding">
<DiscreteObjectKeyFrame KeyTime="0" Value="96,136,86,56"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Snapped">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="pageTitle" Storyboard.TargetProperty="Style">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedPageHeaderTextStyle}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="itemListView" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="itemGridView" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
<!-- Bottom AppBar -->
<Page.BottomAppBar>
<AppBar IsOpen="True" x:Name="botAppBar" VerticalContentAlignment="Bottom" VerticalAlignment="Bottom">
<GridView
x:Name="itemGridView"
AutomationProperties.AutomationId="ItemsGridView"
AutomationProperties.Name="Items"
TabIndex="1"
Grid.Row="1"
Grid.ColumnSpan="2"
VerticalAlignment="Top"
HorizontalAlignment="Left"
SelectionMode="Single"
IsSwipeEnabled="false"
IsItemClickEnabled="True" MaxHeight="100">
<!--"-->
<Button Command="{Binding DisplayView}" CommandParameter="SecondView" Style="{StaticResource MyMenue}">
<Button.Content >
<StackPanel>
<TextBlock Text="SecondView" TextAlignment="Center"></TextBlock>
</StackPanel>
</Button.Content>
</Button>
<Button Command="{Binding DisplayView}" CommandParameter="ThirdView" Style="{StaticResource MyMenue}">
<Button.Content >
<StackPanel>
<TextBlock Text="ThirdView" TextAlignment="Center"></TextBlock>
</StackPanel>
</Button.Content>
</Button>
</GridView>
</AppBar>
</Page.BottomAppBar>
</Page>
Meine App.xaml , wo das ViewModel der Portable Class Library verwendet wird.
<?xml version="1.0" encoding="utf-8"?>
<Application x:Class="Mvvm.Store.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Mvvm.Store"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="using:Mvvm.PCL.ViewModel"
mc:Ignorable="d">
<Application.Resources>
<ResourceDictionary>
<vm:ViewModelLocator p7:Key="Locator" p8:IsDataSource="True"
xmlns:p8="http://schemas.microsoft.com/expression/blend/2008"
xmlns:p7="http://schemas.microsoft.com/winfx/2006/xaml" />
<ResourceDictionary.MergedDictionaries>
<!--
Styles that define common aspects of the platform look and feel
Required by Visual Studio project and item templates
-->
<ResourceDictionary Source="Common/StandardStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
Zuletzt noch das MainViewModel.cs , wo die Views gesetzt werden sollen.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Input;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
#if NETFX_CORE
using Mvvm.Store.Views;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
#endif
namespace Mvvm.PCL.ViewModel
{
/// <summary>
/// This class contains properties that the main View can data bind to.
/// <para>
/// Use the <strong>mvvminpc</strong> snippet to add bindable properties to this ViewModel.
/// </para>
/// <para>
/// You can also use Blend to data bind with the tool's support.
/// </para>
/// <para>
/// See http://www.galasoft.ch/mvvm
/// </para>
/// </summary>
public class MainViewModel : ViewModelBase, INotifyPropertyChanged
{
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
#if NETFX_CORE
DisplayView = new RelayCommand<string>(DisplayViewCommandExecute);
#endif
}
#if NETFX_CORE
#region Commands
public RelayCommand<string> DisplayView { get; private set; }
#endregion
#region CurrentView Property
public const string CurrentViewPropertyName = "CurrentView";
private Page _currentView;
public Page CurrentView
{
get { return _currentView; }
set
{
if (_currentView == value)
return;
_currentView = value;
RaisePropertyChanged(CurrentViewPropertyName);
}
}
#endregion
private void DisplayViewCommandExecute(string viewName)
{
switch (viewName)
{
case "SecondView":
CurrentView = new SecondView();
break;
case "ThirdView":
CurrentView = new ThirdView();
break;
}
}
#endif
}
}
Problem: Die Commands
Command="{Binding DisplayView}" CommandParameter="SecondView"
funktionieren nicht und ich weiß auch nicht, wie ich beim Starten der App das ContentControl mit der MainView.xaml befülle.
Mein Programm http://www10.zippyshare.com/v/29730402/file.html (Visual Studio 2012 benötigt (nicht Express))
Hi, ich kenne die RenderTransform (Render-Offset) und LayoutTransform (Koordination-Transformation) von WPF, aber wozu bzw. was macht die VisualTransform der Visual-Class? Leider findet man dazu wenig im Internet.
So, hab mal das folgende benutzt:
http://www.codeproject.com/Articles/7388/A-Simple-C-Wrapper-for-the-AviFile-Library
Ist aber auch leider langsam...
Hab mal per Threads versucht die Arbeit des Extrahierens auf verschiedenen CPU-Kernen zu verteilen. Problem: es entstehen Artefakte im Video. Kommt das eventuell durch mehrere Zugriffe auf die eine Videodatei?