C# 获取对外部参数可见的模板视图
在XAML世界中,我在将模板/样式的数据公开给视图时遇到了一个问题,该视图正在使用此模板/样式。这里有一个例子。 第一个样式模板:C# 获取对外部参数可见的模板视图,c#,xaml,silverlight,templates,C#,Xaml,Silverlight,Templates,在XAML世界中,我在将模板/样式的数据公开给视图时遇到了一个问题,该视图正在使用此模板/样式。这里有一个例子。 第一个样式模板: <Style TargetType="myStyle"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="myStyle">
<Style TargetType="myStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="myStyle">
<telerik:RadGridView Name="SomeName"
ItemsSource="{TemplateBinding SomeSource}"
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn DataMemberBinding="{Binding SomeBinding}" Header="SomeHeader"/>
<telerik:GridViewDataColumn DataMemberBinding="{Binding SomeBinding2}" Header="SomeHeader2" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding SomeBinding3}" Header="SomeHeader3" IsReadOnly="True">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<Controls DataContext="{Binding SomeBinding4}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
以及将使用它的xaml文件:
<myStyle
Grid.Row="0"
SomeSource="{Binding SomeExternalSource}">
<!-- I want here behaviour that will interact with myStyle Columns for example exporting this data to excel-->
</myStyle>
当您创建自定义控件或视图,并希望它们具有一些技术接口,以便可以使用xaml标记或代码与自定义类型交互时,我建议您添加公共从属属性
假设您有一个控件MySpecialGrid
MySpecialGrid的默认样式
您现在可以从控件外部访问它,如下所示:
<MySpecialGrid x:Name="FeeblefezerDataGrid" ... />
<MyExcelExportButton Content="Export To Excel"
ColumnsConfiguration="{Binding ElementName=FeeblefezerDataGrid, Path=Columns}"/>
我已经编辑了你的标题。请看,如果共识是否定的,他们不应该。好的,我会记住的
<Style TargetType="MySpecialGrid">
<Setter Property="Columns">
<Setter.Value>
<RadGridViewColumnsConfiguration>
<GridViewDataColumn DataMemberBinding="{Binding SomeBinding}" Header="SomeHeader"/>
<GridViewDataColumn DataMemberBinding="{Binding SomeBinding2}" Header="SomeHeader2"/>
<GridViewDataColumn DataMemberBinding="{Binding SomeBinding3}" Header="SomeHeader3">
<GridViewDataColumn.CellTemplate>
<DataTemplate>
<... />
</DataTemplate>
</GridViewDataColumn.CellTemplate>
</GridViewDataColumn>
</RadGridViewColumnsConfiguration>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="MySpecialGrid">
<RadGridView Columns="{TemplateBinding Columns}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<MySpecialGrid x:Name="FeeblefezerDataGrid" ... />
<MyExcelExportButton Content="Export To Excel"
ColumnsConfiguration="{Binding ElementName=FeeblefezerDataGrid, Path=Columns}"/>