我有用户控件,我用它作为listview的datatemplate。此模板的内容是一个简单的复选框。
<UserControl>
<UserControl.Resources>
<Style TargetType="CheckBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CheckBox">
......
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid>
<CheckBox Content="{Binding CheckBoxContent}"
VerticalAlignment="Center"/>
</Grid>
</UserControl>
Listview就是这样的
<ListView Name="Optimization"
ItemTemplate="{StaticResource CheckboxTemplate}"
ItemsSource="{Binding checkboxList}"
Width="Auto"
FontSize="{ThemeResource TextStyleExtraLargeFontSize}"
Margin="108,0,0,0"/>
我的问题是如何在复选框内的内容展示器中使用字体大小来获取Listview中提供的值,如上所述。
我搜索过,但所有选项都指向WPF,而且没有一个指向Windows手机或Windows应用商店。我还在contentPresenter的fontsize属性上尝试了templatedParent,但它看起来并不像Listview是模板的父级。 在此先感谢您的帮助。
答案 0 :(得分:0)
您可以通过ElementName绑定来完成。
定义UserControl时 - 为他设置一个x:名称
<UserControl
x:Class="App1.CheckBoxUserControl"
x:Name="CheckBoxControl"
.............>
...
</UserControl>
首先将ContentPresenter的FontSize绑定到UserControl的FontSize
<UserControl.Resources>
<Style TargetType="CheckBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CheckBox">
<ContentPresenter FontSize="{Binding FontSize, ElementName=CheckBoxControl}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
然后只需将UserControl的FontSize绑定到ListView的FontSize即可。
<DataTemplate x:Key="CheckboxTemplate">
<local:CheckBoxUserControl FontSize="{Binding FontSize, ElementName=Optimization}"/>
</DataTemplate>