Wpf 从ItemSources中的属性绑定笔划
我有一个对象集合,比如MyModel.cs。该集合称为Wpf 从ItemSources中的属性绑定笔划,wpf,xaml,data-binding,Wpf,Xaml,Data Binding,我有一个对象集合,比如MyModel.cs。该集合称为Some。在MyModel中,它的属性颜色为笔刷类型 现在所有的颜色都是红色 现在我有 <MyControl: x:Name="control1" ItemsSource="{Binding Some}" Stroke="Red"> 但你看,我硬编码的中风。我想要的是 Stroke=“{Binding Some.Color}” 如何操作?该控件显示多个模型。如果要将笔划属性设置为其中一个的颜色,则需要指定哪一个,例如: &l
Some
。在MyModel中,它的属性颜色为笔刷类型
现在所有的颜色都是红色
现在我有
<MyControl: x:Name="control1" ItemsSource="{Binding Some}" Stroke="Red">
但你看,我硬编码的中风。我想要的是
Stroke=“{Binding Some.Color}”
如何操作?该控件显示多个模型。如果要将笔划
属性设置为其中一个的颜色
,则需要指定哪一个,例如:
<MyControl x:Name="control1" ItemsSource="{Binding Some}" Stroke="{Binding Some[0].Color}">
这将Stroke
属性绑定到第一个MyModel
对象的Color
属性,假设Some
集合具有索引器。控件显示多个模型。如果要将笔划
属性设置为其中一个的颜色
,则需要指定哪一个,例如:
<MyControl x:Name="control1" ItemsSource="{Binding Some}" Stroke="{Binding Some[0].Color}">
这将
Stroke
属性绑定到第一个MyModel
对象的Color
属性,假设Some
集合有一个索引器。如果MyControl
继承自Selector
,则设置IsSynchronizedWithCurrentItem=“True”
并绑定到Some/Color
。斜杠或V形(/
)表示使用集合中“当前项”的颜色属性:
<MyControl
IsSynchronizedWithCurrentItem="True"
x:Name="control1"
ItemsSource="{Binding Some}"
Stroke="{Binding Some/Color}"
/>
这将使用选定项目的颜色笔刷进行笔划。你不愿意提供任何关于你想做什么的提示,这是可以理解的,但这是一个公平的猜测
如果MyControl
不是从选择器继承的,请使用mm8的解决方案 如果MyControl
继承自Selector
,则设置IsSynchronizedWithCurrentItem=“True”
并绑定到Some/Color
。斜杠或V形(/
)表示使用集合中“当前项”的颜色属性:
<MyControl
IsSynchronizedWithCurrentItem="True"
x:Name="control1"
ItemsSource="{Binding Some}"
Stroke="{Binding Some/Color}"
/>
这将使用选定项目的颜色笔刷进行笔划。你不愿意提供任何关于你想做什么的提示,这是可以理解的,但这是一个公平的猜测
如果MyControl
不是从选择器继承的,请使用mm8的解决方案 您需要将多重绑定与自定义转换器一起使用(以解决集合中的两个模型具有不同颜色的情况-选择哪种颜色?),或者将属性移动到更高级别(集合所在的位置)。MyControl是否具有类似列表框的SelectedItem?如果MyControl具有ItemsSource属性,则还应具有ItemTemplate。使用绑定到颜色的元素(例如,其背景属性)声明DataTemplate。您是尝试单独设置每个项目的笔划,还是尝试为整个MyControl
设置一个笔划?这是一个区别,这是一个重要的区别。你必须振作起来,非常勇敢,并提供这些信息。我正试图为整个世界划上一笔MyControl@EdPlunkettYou需要将多重绑定与自定义转换器一起使用(以解决集合中的两个模型具有不同颜色的情况-选择哪个?),或者将属性移动到更高级别(集合所在的位置)。MyControl是否具有类似列表框的SelectedItem?如果MyControl具有ItemsSource属性,则它还应具有ItemTemplate。使用绑定到颜色的元素(例如,其背景属性)声明DataTemplate。您是尝试单独设置每个项目的笔划,还是尝试为整个MyControl
设置一个笔划?这是一个区别,这是一个重要的区别。你必须振作起来,非常勇敢,并提供这些信息。我正试图为整个世界划上一笔MyControl@EdPlunkett