2014-09-28 3 views
0

У меня есть пользовательский элемент управления, который я использую как datatemplate для listview. Содержимое этого шаблона - это простой флажок.Изменить свойство checkbox в datatemplate в Listview

<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 Phone или Windows Store. Я также попытался templatedParent на свойство fontsize contentPresenter, но он не выглядит так, как Listview является родительским элементом шаблона. Заранее благодарим за помощь.

ответ

0

Вы можете сделать это через привязку ElementName.

Когда вы определяете UserControl - установить ему х: Имя

<UserControl 
    x:Class="App1.CheckBoxUserControl" 
    x:Name="CheckBoxControl" 
    .............> 
    ... 
</UserControl> 

Bind вашего FontSize из ContentPresenter в FontSize от UserControl прежде всего

<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> 

Тогда просто связать FontSize в UserControl в в FontSize ListView.

<DataTemplate x:Key="CheckboxTemplate"> 
      <local:CheckBoxUserControl FontSize="{Binding FontSize, ElementName=Optimization}"/> 
     </DataTemplate> 
+0

Не повезло :( Когда я пытаюсь установить ContentPresenter FONTSIZE в UserControl, ElementName IntelliSense не показывает UsercontrolName в опции. Я обошел это, но произошла ошибка Кроме того, что эта оптимизация? –

+0

ПЫТАЮТСЯ поместите DataTemplate в ресурсы страницы, на которой указан ListView. – PolarBear

+0

Нет. Я не могу связать свой ContentPresenter Fontsize с моим размером шрифта usercontrol. Что это за оптимизация? –