gpt4 book ai didi

wpf - 使用自定义面板问题将附加属性绑定(bind)到 ItemsControl 中的项目

转载 作者:行者123 更新时间:2023-12-05 00:38:07 27 4
gpt4 key购买 nike

我无法让以下 XAML 按我的意愿工作。所有绑定(bind)都有效,因为绑定(bind)没有错误。但是我没有从 上的绑定(bind)中得到预期的结果比率形状 长方形。问题是附加属性 wpflib:RatioPanel.Ratio 始终返回其默认值,而不是数据绑定(bind)值。

所以我认为 上的附加属性比率形状 设置在错误的“上下文”中。如何绑定(bind)到附加属性以便 wpflib:RatioPanel 得到界限值?

<wpflib:RatioContentPresenter2 RatioMaxValue="{Binding Path=RatioMaxValue}">
<ItemsControl Grid.Row="0" wpflib:RatioContentPresenter2.RatioOffset="{Binding Path=RatioOffset}" wpflib:RatioContentPresenter2.RatioValue="{Binding Path=RatioValue}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<wpflib:RatioPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>

<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle x:Name="RatioShape" wpflib:RatioPanel.Ratio="{Binding Path=Value}" Fill="{Binding Path=Brush}" />
</DataTemplate>
</ItemsControl.ItemTemplate>

<ItemsControl.ItemsSource>
<Binding Path="RatioItems" Mode="OneWay" />
</ItemsControl.ItemsSource>
</ItemsControl>
</wpflib:RatioContentPresenter2>

最佳答案

RatioPanel 的子项将是 ContentPresenter 的实例,假设项目不是 UIElements。 ContentPresenter 将显示您在 ItemTemplate 中定义的 DataTemplate。

通常,小组直接与他们的 child 一起工作。您正在 ContentPresenter 的子项上设置附加属性,该子项是面板的子项。我相信您应该直接在 ContentPresenter 上进行设置。所以是这样的:

<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="wpflib:RatioPanel.Ratio" Value="{Binding Path=Value}" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle x:Name="RatioShape" Fill="{Binding Path=Brush}" />
</DataTemplate>
</ItemsControl.ItemTemplate>

关于wpf - 使用自定义面板问题将附加属性绑定(bind)到 ItemsControl 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6126183/

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