[英]Binding to the DataContext within a Style results in a 'catastrophic failure?'
我正在尝试从Style
绑定到元素的DataContext
,由于某种原因,这会导致XAML解析器中的“灾难性失败”。 这是代码:
<UserControl
x:Class="Sirloin.AppView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Sirloin"> <!--A few lines omitted for brevity-->
<UserControl.Resources>
<ResourceDictionary>
<Style x:Key="MenuButtonStyle" TargetType="Button">
<Setter Property="Background" Value="Transparent"/>
<!--This fails-->
<Setter Property="Content" Value="{Binding Symbol}"/>
<Setter Property="FontFamily" Value="Segoe MDL2 Assets"/>
<!--And this too-->
<Setter Property="Width" Value="{Binding CompactPaneLength, ElementName=splitView}"/>
</Style>
</ResourceDictionary>
</UserControl.Resources>
<SplitView x:Name="splitView" DisplayMode="CompactOverlay">
<SplitView.Pane>
<Grid>
<!--The hamburger-->
<Button Grid.Row="0" Style="{StaticResource MenuButtonStyle}">
<Button.DataContext>
<local:MenuItem Symbol=""/>
</Button.DataContext>
</Button>
</Grid>
</SplitView.Pane>
</SplitView>
</UserControl>
当我尝试在Visual Studio中进行编译时,这是导致的错误消息:
我尝试过一些修改Bindings
和更改RelativeSource
,但无济于事。 每次都会弹出相同的错误消息。
为什么会发生这种情况,我该怎么解决?
Windows运行时不支持在Setter的值中进行绑定-看一下MSDN :
Windows Presentation Foundation(WPF)和Microsoft Silverlight支持使用Binding表达式为样式中的Setter提供值的功能。 Windows运行时不支持Setter.Value的绑定用法(该绑定不会评估,该Setter无效,您不会收到错误,但也不会获得所需的结果)。 从WPF或Silverlight XAML转换XAML样式时,请使用设置值的字符串或对象替换任何绑定表达式用法,或将这些值重构为共享的{StaticResource}标记扩展值,而不是绑定获得的值。
您也可以在此处查看Clemens答案以找到解决方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.