gpt4 book ai didi

c# - 如何在XAML中将DataBinding设置为任意属性?

转载 作者:行者123 更新时间:2023-12-03 10:24:16 28 4
gpt4 key购买 nike

我有以下问题:我正在设计UserControl,一种渐变色规。我决定使用MVVM设计模式,事实证明这是一个不错的选择。但是,我有以下问题。在View XAML文件中,我尝试使用托管转换器将值转换为颜色,该转换器需要2个参数。为此,我使用MultiBinding:

<ItemsControl ItemsSource="{Binding Path=ViewData}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Height="2">
<Rectangle.Fill>
<MultiBinding Converter="{StaticResource colorConverter}">
<Binding Path="Value"/>
<Binding Source="{StaticResource Palette_ICOS}"/>
</MultiBinding>
</Rectangle.Fill>
</Rectangle>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

事实是,我不想使用

{StaticResource Palette_ISO1}



作为第二个参数,但作为属性,它是DataContext的直接属性,而不是ViewData集合成员的属性。我尝试了几种方法来完成此方案,但未取得成功。

最后,我尝试了以下方法:
<Binding Path="CurrentPallete"/>

而CurrentPallete看起来像:
public Palette CurrentPalette
{
get { return _currentPalette; }
set
{
_currentPalette = value;
}
}

即该类中的一个属性,其实例设置为 控件的DataContext,该控件托管了 ItemControl 。我得到的是
[0x00000001] = {DependencyProperty.UnsetValue}

调试器中的值,当调用相应的转换器时,这可能意味着找不到该属性。谁能指出达到预期效果的方法是什么?非常感谢!

最佳答案

<Binding Path="DataContext.Palette_ICOS"
RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ItemsControl}" />

关于c# - 如何在XAML中将DataBinding设置为任意属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8129696/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com