c# – 将ValueConverter存储到变量
我有一个ValueConverter用于在StoryBoard动画中绑定’To’Value,类似于答案-
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 > 我收到以下错误:
我觉得这是一个常见问题,但无法找到解决方案来消除这种冗余. 更新 谢谢Rohit,你的答案解决了这个问题.但我还有一个相关的问题,所以更新问题.此变量CalculatedWidth在正常情况下工作正常,但在RenderTransform中使用它时,它不会获取该值.即如果我使用正常的方式使用转换器它可以工作,但它不会获取变量. <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变换时不会创建变量? 解决方法
由于错误提示您无法与Double绑定.绑定只能使用Dependency属性完成.
而是在资源中使用FrameworkElement并绑定其宽度(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> 你可以像这个样本一样绑定这个资源: <TextBlock Width="{Binding Width,Source={StaticResource CalculatedWidth}}"/> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |