动态用户控件

时间:2019-06-26 09:14:38

标签: c# sql database wpf user-controls

我是WPF的新手,并且希望像在ASP.Net ListView中一样,在SQL查询的基础上添加按钮。我想动态地基于DataTable中的记录创建按钮。我应该使用什么?后面的代码是什么?

SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("select * from tblGroup", con);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{

}

1 个答案:

答案 0 :(得分:0)

首先为您的输出创建一个模型。

然后在代码后面的属性中创建模型的可观察集合

public ObservableCollection<YourModel> Collection { get; private set; }    

public Window() {
    Collection = GetYourData();
    InitializeComponent();
}

之后,您可以将其绑定到这样的DataGrid

<DataGrid x:Name="YourTable" ItemsSource="{Binding ElementName=YourWindow, Path=Collection}">
     <DataGrid.Columns>
         <DataGridTextColumn Header="Example" Binding="{Binding ModelProperty}"/>
         <DataGridTemplateColumn Header="Your Button">
             <DataGridTemplateColumn.CellTemplate>
                 <DataTemplate>
                     <Button Content="Your Button">
                        <Button.Style>
                            <Style>
                                <Setter Property="Button.Visibility" Value="Hidden"/>
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding YourDependingModelProperty}" Value="YourDesiredValue">
                                         <Setter Property="Button.Visibility" Value="Visible"/>
                                         <EventSetter Event="Click" Handler="YourClickEvent"/>
                                    </DataTrigger>
                                    <!-- You can add more triggers here -->
                                </Style.Triggers>
                            </Style>
                        </Button.Style>
                 </DataTemplate>
             </DataGridTemplateColumn.CellTemplate>
         </DataGridTemplateColumn>
     </DataGrid.Columns>
</DataGrid>

此代码未经测试,但您可能值得一试