【发布时间】:2014-01-20 19:28:25
【问题描述】:
我有一个用于在 StoryBoard 动画中绑定“To”值的 ValueConverter,类似于答案 - 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 的结果存储到资源变量来删除此重复代码,以便我可以将此本地变量直接绑定到情节提要。
<system:Double x:Key="CalculatedWidth">
<MultiBinding Converter="{StaticResource multiplyConverter}">
<Binding Path="ActualHeight" ElementName="ExpanderContent"/>
<Binding Path="Tag" RelativeSource="{RelativeSource Self}" />
</MultiBinding>
</system:Double >
我收到以下错误:
“Double”类型不支持直接内容。
无法向“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>
我将变量保留为本地资源的一部分。这是否意味着调用 Render 转换时不会创建变量?
【问题讨论】:
-
那个更新应该是另一个问题,这里的答案应该被接受。否则只会令人困惑。
标签: c# wpf xaml ivalueconverter