c# - 从代码中找到ControlTemplate

标签 c# wpf xaml controltemplate

我有一个包含以下代码的 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,但它不起作用。我怎样才能做到这一点?

最佳答案

可能最简单的方法是将 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;

关于c# - 从代码中找到ControlTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637436/

相关文章:

c# - HttpClient 不返回内容类型

c# - 如何增加 NumericUpDown 小数

wpf - 获取 ComboBoxItem 的宽度

c# - UWP - 在 TextBlock 中垂直居中文本

c# - XAML ContentControl 数据绑定(bind)不起作用

c# - 如果c# wpf中的可见性为 'Auto',如何知道 ListView 的VerticalScrollbar是否可见?

c# - 互联网上的 UDP 多播?

C# DateTime.Parse(longdate) 抛出异常

c# - 使用 BindingOperations.EnableCollectionSynchronization

javascript - 如何动态更改表格列的内容