有一种方式,我可以在一个Style做到这一点: <Style TargetType="FrameworkElement"> <Setter Property="Visibility"> <Setter.Value> <Binding Path="Tag" RelativeSource="{RelativeSource AncestorType=UserControl}" Converter="{StaticResource AccessLevelToVisibilityConverter}" ConverterParameter="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Tag}" /> </Setter.Value> </Setter> </Style> 我只需要将顶级父项的Tag和控件本身的Tag发送给我的转换器类。
我有一个WPF数据网格,我想根据值不同的单元格颜色。 我有我的xaml下面的代码 Style TargetType="DataGridCell" 而不是select一个单元格只select所有行? 我错过了什么?
我有一个属性的视图模型,公开了一些东西。 我有一个ComboBox的ItemsSource属性绑定到这个集合。 现在用户可以从列表中select。 我想让用户清除select,所以我想添加一个项目(即空)到combobox。 这非常简单。 我决定尝试为ItemsSource使用CompositeCollection,以便将现有列表中的项目添加到combobox以及额外的Null项目。 经过这一段时间,我决定返回到CompositeCollection类的文档。 我复制他们的例子,并修改它使用视图模型,而不是静态资源。 当我将CollectionContainer绑定到ViewModel公开的列表时,我发现列表中没有任何项目出现在列表中。 我不知道如何解决这个问题,我正在寻找关于这个主题的任何build议。 这是我的XAML代码: <Window Background="CornflowerBlue" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:c="clr-namespace:TryingWPF" x:Class="CompositeCollections" Title="CompositeCollections" SizeToContent="WidthAndHeight"> <Window.Resources> <c:CompositeCollectionVM x:Key="CompositeCollectionVM"/> <XmlDataProvider x:Key="GreekHeroesData" XPath="GreekHeroes/Hero"> <x:XData> <GreekHeroes xmlns=""> <Hero Name="Jason" /> <Hero Name="Hercules" /> <Hero Name="Bellerophon" /> <Hero Name="Theseus" /> <Hero Name="Odysseus" /> <Hero Name="Perseus" /> </GreekHeroes> </x:XData> </XmlDataProvider> <DataTemplate DataType="{x:Type c:GreekGod}"> <TextBlock Text="{Binding Path=Name}" […]
在WPF中使用资源(如画笔,模板和样式)时,可以将它们指定为StaticResources <Rectangle Fill="{StaticResource MyBrush}" /> 或者作为一个DynamicResource <ItemsControl ItemTemplate="{DynamicResource MyItemTemplate}" /> 大多数时候(总是?),只有一个工作,另一个会在运行时抛出exception。 但是我想知道为什么: 主要区别是什么? 像内存或性能影响 WPF中有像“画笔总是静态”和“模板总是dynamic的”等规则吗? 我认为静态与dynamic之间的select并不像看起来那么武断……但我看不到这种模式。
我很难将简单的静态string属性绑定到文本框。 这是与静态属性的类: public class VersionManager { private static string filterString; public static string FilterString { get { return filterString; } set { filterString = value; } } } 在我的xaml中,我只想将这个静态属性绑定到一个文本框中: <TextBox> <TextBox.Text> <Binding Source="{x:Static local:VersionManager.FilterString}"/> </TextBox.Text> </TextBox> 一切都编译完成,但在运行时,我得到以下exception: 无法将属性“Source”中的值转换为“System.Windows.Markup.StaticExtension”types的对象。 对象'System.Windows.Data.Binding'在标记文件'BurnDisk; component / selectversionpagefunction.xaml'Line 57 Position 29。 任何想法我做错了什么?
标题说明了一切。 有时似乎Name和x:Name属性是可以互换的。 那么,它们之间的明确区别是什么,什么时候最好使用一个呢? 是否有任何性能或内存暗示以错误的方式使用它们? 编辑回应到目前为止表明,使用x:Name一直工作正常,但我仍然想知道是什么区别。 微软把这两个属性放到了WPF的第一个版本中,所以必须有一些合理的解释。
我正在寻找接受数字和小数点,但没有迹象。 我已经使用WinForms 的NumericUpDown控件和Microsoft的NumericUpDown自定义控件的示例查看了示例。 但到目前为止,似乎NumericUpDown(WPF支持或不支持)不会提供我想要的function。 我的应用程序的devise方式,没有谁在他们正确的思想是要混乱的箭头。 他们没有任何实际意义,在我的应用程序的上下文中。 所以我正在寻找一个简单的方法来使一个标准的WPF文本框只接受我想要的字符。 这可能吗? 这是否实用?
以下几点有什么区别: 的SelectedItem 的SelectedValue SelectedValuePath 所有这些依赖属性都是在Selector类中定义的。 我经常混淆SelectedItem与SelectedValue和SelectedValue与SelectedValuePath 。 我想知道它们之间的区别,也是什么时候使用它们,特别是SelectedValue和SelectedValuePath 。 请用一些简单的例子来解释它们的用法 。
我如何使用WPF绑定RelativeSource和什么是不同的使用情况?
我的WPF应用程序会生成一组数据,每次可能有不同数量的列。 在输出中包含将用于应用格式的每一列的描述。 输出的简化版本可能是这样的: class Data { IList<ColumnDescription> ColumnDescriptions { get; set; } string[][] Rows { get; set; } } 这个类被设置为WPF DataGrid上的DataContext,但我实际上是以编程方式创建列: for (int i = 0; i < data.ColumnDescriptions.Count; i++) { dataGrid.Columns.Add(new DataGridTextColumn { Header = data.ColumnDescriptions[i].Name, Binding = new Binding(string.Format("[{0}]", i)) }); } 有没有办法用XAML文件中的数据绑定代替这个代码?