【发布时间】:2018-12-10 15:07:58
【问题描述】:
现在我有一个包含其他类和 UserControls 的 WPF 项目,现在我被卡住了! 如您所见,我拥有的 xaml 文件包含 2 个与不同数据(输入和输出)相似的块
<!--Block 1-->
<GroupBox Grid.Column="0" Grid.Row="0" Header="Inputs">
<StackPanel Orientation="Vertical">
<DataGrid x:Name ="GridI" Style="{x:Null}"
ItemsSource= "{Binding input_List}"
AutoGenerateColumns="False" CellStyle="{StaticResource Body_Content_DataGrid_Centering}"
Margin="5,0" IsReadOnly="True" SelectionMode="Single" RowHeight="50" Height="Auto">
<DataGrid.Columns>
<DataGridTextColumn Width="40*" Binding="{Binding label}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="Input"></TextBlock>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTextColumn Width="40*" Binding="{Binding type}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text = "Type"></TextBlock>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTemplateColumn Width="20*">
<DataGridTemplateColumn.Header>
<TextBlock Text="value" />
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
//datas
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</GroupBox>
<!--Block 2 : outputs-->
<GroupBox Grid.Column="1" Grid.Row="0" Header="Outputs">
<StackPanel Orientation="Vertical" >
<DataGrid x:Name ="GridO" Style="{x:Null}"
ItemsSource= "{Binding output_List}"
AutoGenerateColumns="False" CellStyle="{StaticResource Body_Content_DataGrid_Centering}"
Margin="5,0" IsReadOnly="True" SelectionMode="Single" RowHeight="50" Height="Auto">
<DataGrid.Columns>
<DataGridTextColumn Width="40*" Binding="{Binding label}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="Input"></TextBlock>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTextColumn Width="40*" Binding="{Binding type}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text = "Type"></TextBlock>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTemplateColumn Width="20*" >
<DataGridTemplateColumn.Header>
<TextBlock Text="value" />
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
//Datas
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
我想要做的是创建另一个 UserControl(子)我的项目,我将在其中编写仅一个块的代码,并且此 UserControl(子)将在父 UserControl 中调用两次(这是一种代码优化)
由于我是 WPF 新手,您能帮我怎么做吗 是否必须添加任何 C# 代码,或者我只能使用 xaml 来执行此操作 是否必须将任何修改添加到我的 APP.xaml 谢谢你
【问题讨论】:
-
您好,欢迎来到 StackOverflow。在最终添加答案之前,请检查这是否适合您:stackoverflow.com/questions/35399129/…
-
@DanieleSartori 我试过这个但是不,这不是我被要求做的(这不是我的选择,这是老板的选择)他要求一个具有数据网格结构的 UserControl(儿童UC)可以在其他用户控件中调用我现在已经卡了 7 天了:/
-
这正是那个问题的答案。 2 GroupBox 具有完全相同的结构,只是它们具有不同的项目来源。您可以在项目的目录中简单地创建一个用户控件,使用名为 ItemSource 的自定义依赖项属性(如我的链接中的答案),然后在您的父窗口中将其放在容器内(网格、边框或任何您想要的)