【问题标题】:Find a ControlTemplate from code从代码中查找 ControlTemplate
【发布时间】:2011-08-25 04:20:49
【问题描述】:

我有一个包含此代码的 xaml 文件:

<GridViewColumn x:Name="lvCol3"
                Header="Quantità"
                Width="120">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <Control x:Name="host">
                <Control.Template>
                    <ControlTemplate>
                        <TextBlock Text="{Binding Path=Entity.Quantita}" />
                    </ControlTemplate>
                </Control.Template>
            </Control>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding Path=IsSelected,
                                       RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"
                             Value="True">
                    <Setter TargetName="host" Property="Template">
                        <Setter.Value>
                            <ControlTemplate x:Name="myControlTemplate" />
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

我会从后面的代码中管理myControlTemplate,以便分配不同的 UI 对象。

我尝试使用FindResource,但它不起作用。我该怎么做?

【问题讨论】:

    标签: c# wpf xaml controltemplate


    【解决方案1】:

    可能最简单的方法是将您的 ControlTemplate 提取到资源中:然后您可以使用 FindResource。

    类似这样的:

    <UserControl>
      <UserControl.Resources>
        <ControlTemplate x:Key="MyControlTemplate">
             <TextBlock
                Text="{Binding Path=Entity.Quantita}"/>
        </ControlTemplate>
      </UserControl.Resources>
    
      ...
    
      <GridViewColumn 
         x:Name="lvCol3"
         Header="Quantità"
         Width="120">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                   <Control x:Name="host" Template="{StaticResouce MyControlTemplate}">   
                   </Control>
            </GridViewColumn.CellTemplate>
       </GridViewColumn>
    
      ...
    </UserControl>
    

    然后在您的 UserControl(或任何根元素)的代码中,您可以执行此操作

    var resource = FindResource("MyControlTemplate") as ControlTemplate;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      相关资源
      最近更新 更多