在XAML中,我可以声明一个DataTemplate,以便在显示特定types时使用该模板。 例如,这个DataTemplate将使用一个TextBlock来显示一个客户的名字: <DataTemplate DataType="{x:Type my:Customer}"> <TextBlock Text="{Binding Name}" /> </DataTemplate> 我想知道是否有可能定义一个DataTemplate,在任何时候显示IList <Customer>时都会使用它。 所以如果一个ContentControl的内容是一个ObservableCollection <Customer>,它会使用该模板。 是否有可能使用{x:Type}标记扩展在XAML中声明像IList这样的genericstypes?
我需要这样的样式在XAML中的样式: <Application.Resources> #if DEBUG <Style TargetType="{x:Type ToolTip}"> <Setter Property="FontFamily" Value="Arial"/> <Setter Property="FlowDirection" Value="LeftToRight"/> </Style> #else <Style TargetType="{x:Type ToolTip}"> <Setter Property="FontFamily" Value="Tahoma"/> <Setter Property="FlowDirection" Value="RightToLeft"/> </Style> #endif </Application.Resources>
将所有ViewModel存储在SimpleIoc中是否正确? 比如我有三页MainPage,Photos,Directories(因此三个ViewModels – > MainVM,PhotosVM,DirectoriesVM)。 我应该在每个页面中设置DataContext ViewModelLocator中的视图模型属性或将ViewModels作为MainVM中的属性嵌套,并将每个页面DataContext绑定到Main.PhotosVMProperty,Main.DirectoriesVMProperty等? 任何人都可以解释我的想法和IoC的目的?
我在WPF应用中使用了一些图片。 XAML: <Image Name="ImageOrderedList" Source="images/OrderedList.png" ToolTip="Ordered List" Margin="0,0,5,5" Width="20" Height="20" SnapsToDevicePixels="True" MouseUp="Image_MouseUp" MouseEnter="Image_MouseEnter" MouseLeave="Image_MouseLeave" /> 但是,他们似乎模糊: 死链接 – 模糊的WPF图像 这是一个放大,并排的比较。 原件在左边: 死链接 – 模糊的WPF图像放大 为什么SnapsToDevicePixels="True"行不能防止这个问题?
我正在创build一个WP 8.1 Silverlight应用程序。 我有一个string名称的ObservableCollection ,它被设置为ListBox的ItemsSource 。 ListBox中button的名称。 然后我想从ListBox提取button,但返回值是stringtypes。 xaml代码是: <ListBox x:Name="Game_ScrollViewer_online" Margin="41,104,128,6" SelectedValuePath="Current_game_button"> <ListBox.ItemTemplate> <DataTemplate> <Button x:Name="Current_game_button" Content="{Binding}" HorizontalAlignment="Center" Height="80" Margin="-14,6,-15,0" VerticalAlignment="Top" Width="210" Template="{StaticResource Button_CurrentLayout1}" RenderTransformOrigin="0.5,0.5" Foreground="#FFCBECCB" FontFamily="Times New Roman" Click="LoadGame_online" FontSize="16"> </Button> </DataTemplate> </ListBox.ItemTemplate> </ListBox> 然后我想提取button元素: for (int i = 0; i < Game_ScrollViewer_online.Items.Count; i++) { var tempType = Game_ScrollViewer_online.Items[i].GetType(); Button tempBut = (Game_ScrollViewer_online.Items[i] […]
我有创buildxaml控制的问题。 我正在通用应用程序中编写VS 2015中的新项目。 我想创build网格。 在这个网格中,我想要一个button。 在模型中,我指定了列(Level)和行。 这是我的代码: <ItemsControl Grid.Row="1" ItemsSource="{Binding Path=TechnologyList}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <Grid> <Grid.RowDefinitions> <RowDefinition Height="10*"/> <RowDefinition Height="10*"/> <RowDefinition Height="10*"/> <RowDefinition Height="10*"/> <RowDefinition Height="10*"/> <RowDefinition Height="10*"/> <RowDefinition Height="10*"/> <RowDefinition Height="10*"/> <RowDefinition Height="10*"/> <RowDefinition Height="10*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="14*"/> <ColumnDefinition Width="14*"/> <ColumnDefinition Width="14*"/> <ColumnDefinition Width="14*"/> <ColumnDefinition Width="14*"/> <ColumnDefinition Width="14*"/> <ColumnDefinition Width="14*"/> </Grid.ColumnDefinitions> </Grid> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> […]
我遇到了绑定到一个ItemsControl的DataTemplate中的Button的WPF和命令的问题。 情况非常简单。 ItemsControl绑定到一个对象列表,我希望能够通过单击button来删除列表中的每个对象。 该button执行一个命令,并且该命令负责删除。 CommandParameter绑定到我想要删除的对象。 这样我就知道用户点击了什么。 用户应该只能删除他们的“自己的”对象 – 所以我需要在命令的“CanExecute”调用中进行一些检查,以validation用户是否具有正确的权限。 问题是传递给CanExecute的参数在第一次被调用时是NULL,所以我不能运行逻辑来启用/禁用命令。 但是,如果我启用了allways,然后单击button执行该命令,CommandParameter正确传入。 这意味着对CommandParameter的绑定正在工作。 ItemsControl和DataTemplate的XAML如下所示: <ItemsControl x:Name="commentsList" ItemsSource="{Binding Path=SharedDataItemPM.Comments}" Width="Auto" Height="Auto"> <ItemsControl.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <Button Content="Delete" FontSize="10" Command="{Binding Path=DataContext.DeleteCommentCommand, ElementName=commentsList}" CommandParameter="{Binding}" /> </StackPanel> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> 所以你可以看到我有一个评论对象的列表。 我想DeleteCommentCommand的CommandParameter绑定到Command对象。 所以我想我的问题是:有没有人遇到过这个问题? CanExecute在我的Command上被调用,但是这个参数第一次总是NULL – 为什么? 更新:我能够把问题缩小一点。 我添加了一个空的Debug ValueConverter,以便在CommandParameter数据绑定时输出消息。 原来问题是CanExecute方法在CommandParameter绑定到button之前执行。 我试图设置CommandParameter之前的命令(如build议) – 但它仍然无法正常工作。 有关如何控制它的任何提示。 Update2:有没有什么办法来检测绑定是否“完成”,以便我可以强制重新评估命令? 另外 – 这是一个问题,我有多个button(ItemsControl中的每个项目)绑定到一个Command对象的同一个实例? Update3:我已经上传了一个bug的复制到我的SkyDrive: http […]
如何从MVVM WPF项目中的DataGrid中select多个项目?
这个问题几乎说明了一切。 我有一个窗口,并试图设置DataContext使用完整的命名空间的ViewModel,但我似乎做错了什么。 <Window x:Class="BuildAssistantUI.BuildAssistantWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" DataContext="BuildAssistantUI.ViewModels.MainViewModel">
我正在为几个窗口共享的一系列控件创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), […]