gpt4 book ai didi

c# - 将 ValueConverter 存储到变量

转载 作者:太空狗 更新时间:2023-10-29 21:34:03 25 4
gpt4 key购买 nike

我有一个 ValueConverter 用于在 StoryBoard 动画中绑定(bind)“To”值,类似于答案 - WPF animation: binding to the “To” attribute of storyboard animation .

问题是我在几个地方重复了下面的 MultiBinding ValueConverter 代码。

    <MultiBinding Converter="{StaticResource multiplyConverter}">
<Binding Path="ActualHeight" ElementName="ExpanderContent"/>
<Binding Path="Tag" RelativeSource="{RelativeSource Self}" />
</MultiBinding>

我想通过将 ValueConverter 的结果存储到一个资源变量来删除这个重复代码,这样我就可以将这个局部变量直接绑定(bind)到 Storyboard。

<system:Double x:Key="CalculatedWidth">
<MultiBinding Converter="{StaticResource multiplyConverter}">
<Binding Path="ActualHeight" ElementName="ExpanderContent"/>
<Binding Path="Tag" RelativeSource="{RelativeSource Self}" />
</MultiBinding>
</system:Double >

我收到以下错误:

The type 'Double' does not support direct content.

Cannot add content to an object of type "Double".

我觉得这是一个常见问题,但无法找到消除这种冗余的解决方案。

更新

谢谢 Rohit ,你的回答解决了问题。但我还有一个相关问题,所以更新问题。此变量 CalculatedWidth 在正常情况下工作正常,但在 RenderTransform 中使用时它不会获取值。即,如果我使用正常方式使用 Converter,它可以工作,但不会获取变量。

<StackPanel.RenderTransform>
<TranslateTransform x:Name="SliderTransform">
<TranslateTransform.X>
<Binding Converter="{StaticResource PanelConverter}" ElementName="SliderPanel" Path="ActualWidth" /> // Works
<Binding Path="Width" Source="{StaticResource CalculatedWidth}"/> // Doesn't Work
</TranslateTransform.X>
</TranslateTransform>
</StackPanel.RenderTransform>

我将变量保留为本地资源的一部分。这是否意味着调用渲染转换时不会创建变量?

最佳答案

错误表明您不能与 Double 绑定(bind)可以仅使用依赖属性完成绑定(bind)

改为在资源中使用 FrameworkElement 并像这样绑定(bind)其宽度 (DP):

<FrameworkElement x:Key="CalculatedWidth">
<FrameworkElement.Width>
<MultiBinding Converter="{StaticResource multiplyConverter}">
<Binding Path="ActualHeight" ElementName="ExpanderContent"/>
<Binding Path="Tag" RelativeSource="{RelativeSource Self}" />
</MultiBinding>
</FrameworkElement.Width>
</FrameworkElement>

您可以像在本示例中那样绑定(bind)此资源:

<TextBlock Width="{Binding Width, Source={StaticResource CalculatedWidth}}"/>

关于c# - 将 ValueConverter 存储到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20898372/

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