使用反射和泛化的通用UserControl

时间:2014-03-11 16:45:35

标签: c# reflection user-controls windows-store-apps winrt-xaml

在我的项目中我写了一些UserControl,我试图尽可能地重用代码。 对于我项目中的每个模型,我创建一个UserControl,显示CRUD(一个简单的表单),另一个显示List(listBox)

是否可以概括(对于具有不同属性的不同类型的模型)? 使用Generalizatione和Reflection可以创建类似于通用UserControl_Crud和通用UserControl_List的东西吗?

所以在我的page.xaml中我可以使用像

这样的东西
<LUC:UserContro_Crud l x:Name="EmployeeUserControl_List" />
<LUC:UserContro_Crud l x:Name="CarsUserControl_List" />
<LUC:UserContro_Crud l x:Name="FruitUserControl_List" />

并在

背后的代码中
EmployeeUserControl_List.MyProperty.ItemsSource = EmployeetList;
CarsUserControl_List.MyProperty.ItemsSource = CarstList;
//MyProperty give me back just the listbox from my UserControl

FruitUserControl_List.MyProperty.ItemsSource = EmployeetList;

显示3个具有不同属性的列表


@HighCore @Nate Diamond

这样,对于我的任何一种模型,我都必须制作一个特定的模板。例如CrudPersonTemplate`

<!-- my crud-->
<DataTemplate x:Key="MyCrud">
    <StackPanel>
        <StackPanel Orientation="Horizontal" Margin="0,20,0,20">
            <TextBlock Text="Code"/>
            <TextBox x:Name="edtCode" InputScope="Number" />
        </StackPanel>
        <StackPanel Orientation="Horizontal" Margin="0,20,0,20">
            <TextBlock Text="Name" />
            <TextBox x:Name="edtName" />
        </StackPanel>
        <StackPanel Orientation="Horizontal" Margin="0,20,0,20">
            <TextBlock Text="Sex" />
            <TextBox x:Name="edtSex" />
        </StackPanel>
    </StackPanel>
</DataTemplate>

比(afeter在app.xaml中注册它作为资源)我可以在Page.xaml中使用它只需输入类似

的内容
<ContentControl x:Name="MyTemplate" Content="{Binding}" ContentTemplate="{StaticResource MyCrud}" />

...但很难管理像&#34; edtName&#34;是否来自page.xaml.cs?我必须编写比使用UserControl更多的代码来执行此操作... 如何管理我的表单中的这个字段? UserControl的区别在哪里?我必须手动绑定ContentTemplate ... 我正在寻找page.xaml中的通用解决方案,在&#34;视图&#34;我只想调用通用模板/ userControl,并自动调用#34;根据page.xaml.cs中关联的对象类型选择相对布局(我希望能更好地解释它,为我的无知道歉)

0 个答案:

没有答案