gpt4 book ai didi

c# - 绑定(bind)DataTrigger的 `Value`到 `VModel`

转载 作者:行者123 更新时间:2023-12-03 10:15:43 25 4
gpt4 key购买 nike

我的 Vmodel 中有一个 int 值:

public int MaxTagCount => URLsCount.Max(tag => tag.Count);

我需要连接这个 MaxTagCount带触发器:
 <DataTrigger Binding="{Binding Count}" Value="1149">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Foreground" Value="Green"/>
</DataTrigger>

如何将“1149”替换为 MaxTagCount ?

最佳答案

如果我理解正确,您正在寻找绑定(bind) Value 的方法的DataTrigger给您的MaxTagCount属性,这是不可能的,因为 Value不是依赖属性。

最常见的解决方法是同时传递 MaxTagCount属性(property)和Count属性到 MultiValueConverter ,转换器将比较这两个值并返回真或假。 DataTrigger的作用|现在将检查转换器返回的值,因此:

第一 ,定义一个比较两个值的基本转换器,如下所示:

public class CompareValuesConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values?[0].Equals(values[1]);
}

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

第二 ,更新您的 DataTrigger检查转换器的返回值,并将您的值传递给转换器,并相应地设置您的样式:
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding >
<MultiBinding.Converter>
<local:CompareValuesConverter/>
</MultiBinding.Converter>
<Binding Path="Count" />
<Binding Path="DataContext.MaxTagCount" ElementName="Main"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Foreground" Value="Green"/>
</DataTrigger>

请注意,我使用的是 ElementName绑定(bind)得到 MaxTagCount值,因为它(很可能)在全局 UI DataContext 上定义(在这种情况下,主窗口命名为 Main ),您也可以使用 RelativeSource捆绑。

关于c# - 绑定(bind)DataTrigger的 `Value`到 `VModel`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48858144/

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