Tag: wpf

WPF数据绑定和validation规则最佳实践

我有一个非常简单的WPF应用程序,我正在使用数据绑定来允许编辑一些自定义的CLR对象。 我现在想在用户点击保存时进行一些inputvalidation。 不过,我所读到的所有WPF书籍都没有给这个问题留下任何空间。 我看到你可以创build自定义的ValidationRules,但我想知道这是否会为我的需要矫枉过正。 所以我的问题是这样的:是否有一个很好的示例应用程序或文章的地方,演示了validationWPF中的用户input的最佳做法?

如何获取WPF中的当前鼠标屏幕坐标?

如何在屏幕上获得当前的鼠标协调? 我只知道得到mousePosition元素的Mouse.GetPosition() ,但是我想得到不使用元素的协调。

WPF水平DataGrid

我想有一个水平方向的WPF DataGrid,有没有人知道一个解决scheme?

WPF:如何在dynamic创build的WPF窗口中dynamic添加控件

我想在我的项目在C#中添加一个WPFinput框。 我从C#中的InputBox获得了一个WinForm,但它具有Winform的外观和感觉。 所以我在WPF中重新创build它。 我已经创build了所有的控件(标签,button,文本框),但我无法将它们添加到我的窗口。 我的窗口是一个由其ShowDialog方法调用的窗口variables static Window winInputDialog 该窗口显示通过ShowDialog但没有控制。 请帮忙。

WPF用户控件中的数据绑定

我正在为几个窗口共享的一系列控件创build一个UserControl。 其中一个控件是一个标签,用“协议号码”来表示一些其他进程的stream程。 我试图提供这个标签的DataBinding,所以窗口会自动反映进程的状态,因为协议号variables的变化。 这是用户控件XAML: <UserControl Name="MainOptionsPanel" x:Class="ExperienceMainControls.MainControls" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" DataContext="{Binding RelativeSource={RelativeSource Self}}" > <Label Height="Auto" Name="numberLabel">Protocol:</Label> <Label Content="{Binding Path=ProtocolNumber}" Name="protocolNumberLabel"/> (…) </UserControl> 这是代码隐藏: public partial class MainControls { public MainControls() { InitializeComponent(); } public int ProtocolNumber { get { return (int)GetValue(ProtocolNumberProperty); } set { SetValue(ProtocolNumberProperty, value); } } public static DependencyProperty ProtocolNumberProperty = DependencyProperty.Register("ProtocolNumber", typeof(int), […]

WPF中的Application.DoEvents()在哪里?

我有下面的示例代码,每次按下一个button时缩放: XAML: <Window x:Class="WpfApplication12.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Canvas x:Name="myCanvas"> <Canvas.LayoutTransform> <ScaleTransform x:Name="myScaleTransform" /> </Canvas.LayoutTransform> <Button Content="Button" Name="myButton" Canvas.Left="50" Canvas.Top="50" Click="myButton_Click" /> </Canvas> </Window> *的.cs public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void myButton_Click(object sender, RoutedEventArgs e) { Console.WriteLine("scale {0}, location: {1}", myScaleTransform.ScaleX, myCanvas.PointToScreen(GetMyByttonLocation())); myScaleTransform.ScaleX = myScaleTransform.ScaleY = […]

我可以使用WPFcombobox中的选定项目的不同模板比下拉部分中的项目?

我有一个WPFcombobox,里面充满了Customer对象。 我有一个DataTemplate: <DataTemplate DataType="{x:Type MyAssembly:Customer}"> <StackPanel> <TextBlock Text="{Binding Name}" /> <TextBlock Text="{Binding Address}" /> </StackPanel> </DataTemplate> 这样,当我打开我的combobox,我可以看到不同的客户与他们的名字,并在下面,地址。 但是,当我select一个客户时,我只想在ComboBox中显示名称。 就像是: <DataTemplate DataType="{x:Type MyAssembly:Customer}"> <StackPanel> <TextBlock Text="{Binding Name}" /> </StackPanel> </DataTemplate> 我可以为ComboBox中的选定项目select另一个模板吗? 解 在答案的帮助下,我解决了这个问题: <UserControl.Resources> <ControlTemplate x:Key="SimpleTemplate"> <StackPanel> <TextBlock Text="{Binding Name}" /> </StackPanel> </ControlTemplate> <ControlTemplate x:Key="ExtendedTemplate"> <StackPanel> <TextBlock Text="{Binding Name}" /> <TextBlock Text="{Binding Address}" /> </StackPanel> </ControlTemplate> […]

OneWayToSource从XAML中的readonly属性绑定

我试图绑定到OneWayToSource作为模式的Readonly属性,但似乎这不能在XAML中完成: <controls:FlagThingy IsModified="{Binding FlagIsModified, ElementName=container, Mode=OneWayToSource}" /> 我得到: 无法设置属性“FlagThingy.IsModified”,因为它没有可访问的set访问器。 IsModified是FlagThingy上的只读DependencyProperty 。 我想将该值绑定到容器上的FlagIsModified属性。 要清楚: FlagThingy.IsModified –> container.FlagIsModified —— READONLY —– —– READWRITE ——– 这可能只使用XAML? 更新:好吧,我通过在容器上设置绑定来解决这个问题,而不是在FlagThingy 。 但我仍然想知道这是否可能。

什么是最简单的C#函数来parsing一个JSONstring到一个对象?

什么是最简单的C#函数来parsing一个JSONstring到一个对象,并显示它(C#的XAML WPF)? (例如具有2个数组的对象 – arrA和arrB)

在WPF中的XAML中设置DataContext

我有以下代码: MainWindow.xaml <Window x:Class="SampleApplication.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525" DataContext="{Binding Employee}"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="200" /> </Grid.ColumnDefinitions> <Label Grid.Row="0" Grid.Column="0" Content="ID:"/> <Label Grid.Row="1" Grid.Column="0" Content="Name:"/> <TextBox Grid.Column="1" Grid.Row="0" Margin="3" Text="{Binding EmpID}" /> <TextBox Grid.Column="1" Grid.Row="1" Margin="3" Text="{Binding EmpName}" /> </Grid> </Window> Employee.cs namespace SampleApplication […]