现在我有一个WPF项目,其中包含其他类和UserControls,现在我被卡住了! 如您所见,我拥有的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中 谢谢你
答案 0 :(得分:0)
从图片中找出并编码此用户控件将是棘手的。原则上,您只需创建一个新的用户控件,然后添加其中两个,然后根据它们的用途将其绑定到相同或不同的属性。
现在在Visual Studio中,当您创建窗口或用户控件时,它会为您添加一个local:xmlns。 如果在同一个名称空间中添加新的usercontrol(称为SharedUC),则可以在xaml中的任何位置使用它,例如:
<local:SharedUC DataContext="{Binding SomeProperty}"
然后可以对两个实例的数据上下文使用两个不同的属性。还是一样。
该属性可以是复杂类型。 这样,您就可以将Description或任何内容作为对象的属性呈现为datacontext。然后,您的usercontrol可以绑定到Description以在文本块中显示字符串。