Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取对外部参数可见的模板视图_C#_Xaml_Silverlight_Templates - Fatal编程技术网

C# 获取对外部参数可见的模板视图

C# 获取对外部参数可见的模板视图,c#,xaml,silverlight,templates,C#,Xaml,Silverlight,Templates,在XAML世界中,我在将模板/样式的数据公开给视图时遇到了一个问题,该视图正在使用此模板/样式。这里有一个例子。 第一个样式模板: <Style TargetType="myStyle"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="myStyle">

在XAML世界中,我在将模板/样式的数据公开给视图时遇到了一个问题,该视图正在使用此模板/样式。这里有一个例子。 第一个样式模板:

<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}"/>