ConverterParameter:在 ItemTemplate 中设置它

发布于 2024-12-25 05:35:02 字数 689 浏览 2 评论 0原文

我正在尝试将转换器参数设置为 ItemTemplate 内项目的属性。 由于 ConverterParameter 不是依赖属性,因此绑定不起作用。
但我真的不需要绑定,只需设置一次就足够了,因为它永远不会改变。

<ItemsControl ItemsSource="ItemsWithTypeProperty">
 <ItemsControl.ItemTemplate>
  <DataTemplate>
   <RadioButton IsChecked="{Binding SelectedItem.Base.Type, Converter={l:IsEqualConverter}, Mode=TwoWay, ConverterParameter={Type}}" />
  </DataTemplate>
 </ItemsControl.ItemTemplate>
</ItemsControl>

等于转换器:
转换:将值与参数进行比较并返回结果
ConvertBack:如果值为 true,则返回参数

ItemTemplate 的 DataContext 是一个类,其中包含名称为“Type”的属性。
它的类型是对象。

有没有办法将 {Type} 替换为仅将其设置为 (DataContext.)Type 一次的内容?如果是的话怎么办?

I'm trying to set the converter parameter to a property of an item inside an ItemTemplate.
Since ConverterParameter is not a dependency property Binding doesn't work.
But I don't really need a binding, just setting it once would be enough since it never changes.

<ItemsControl ItemsSource="ItemsWithTypeProperty">
 <ItemsControl.ItemTemplate>
  <DataTemplate>
   <RadioButton IsChecked="{Binding SelectedItem.Base.Type, Converter={l:IsEqualConverter}, Mode=TwoWay, ConverterParameter={Type}}" />
  </DataTemplate>
 </ItemsControl.ItemTemplate>
</ItemsControl>

IsEqualConverter:
Convert: compares the value to the parameter and returns the result
ConvertBack: If the value is true it returns the parameter

The DataContext of the ItemTemplate is a class which contains the Property with the name "Type".
Its type is object.

Is there a way to replace {Type} with something that would just set it to (DataContext.)Type once? If yes how?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

荆棘i 2025-01-01 05:35:02

我不确定 Type 到底是什么。是对象的System.Type吗?它总是固定类型吗?您可以编写如下内容:

ConverterParameter={x:Type local:TypeToCompare}

如果 Type 不是常量,您可以重写转换器以实现 IMultiValueConverter 并使用 多重绑定

I'm not sure what exactly Type is. Is it the System.Type of the object? Is it always a fixed type? You could write something like:

ConverterParameter={x:Type local:TypeToCompare}

If Type isn't a constant, you could re-write your converter to implement IMultiValueConverter and use a MultiBinding.

被你宠の有点坏 2025-01-01 05:35:02

尝试使用这个:

......, ConverterParameter=Type}" />

在您的转换器上:

    if ((string)parameter == "Type"))
    {
        //Do some stuff
    }

Try to use this :

......, ConverterParameter=Type}" />

And on your Converter :

    if ((string)parameter == "Type"))
    {
        //Do some stuff
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文