使用自定义控件删除重复的XAML代码



摆脱不同文件中重复XAML的好方法是什么。示例:

            <StackPanel Grid.Row="8" Grid.Column="2" Style="{StaticResource ViewContentStyle}" Visibility="{Binding Type, Converter={StaticResource TypeToVisibility}}">
                <ctl:NewLabel LabelContent="{x:Static common:LocalResources.UNameLabel}" LabelStyle="{DynamicResource ContentLabelStyle}"
                                    ImageStyle="{DynamicResource ViewContentControlStyle}">
                    <ctl:ETextBox x:Name="UserName"  HorizontalAlignment="Left" Style="{StaticResource {x:Type TextBox}}"
                                                LostFocus="Textbox_OnLostFocus"
                                                Text="{Binding Path=UserName, UpdateSourceTrigger=PropertyChanged, NotifyOnValidationError=True, ValidatesOnDataErrors=True}">
                    </ctl:ETextBox>
                </ctl:NewLabel>
            </StackPanel>
            <StackPanel Grid.Row="9" Grid.Column="2" Style="{StaticResource ViewContentStyle}" Visibility="{Binding SelectedAuthenticationType, Converter={StaticResource AuthToVisibility}}">
                <StackPanel Orientation="Horizontal" KeyboardNavigation.TabNavigation="None">
                    <Label Style="{DynamicResource ContentLabelStyle}" Content="{x:Static common:LocalResources.UPasswordLabel}"/>
                <AdornerDecorator>
                    <PwdBox x:Name="Password"  
                             HorizontalAlignment="Left"
                             LostFocus="Textbox_OnLostFocus" PasswordChar="*"
                    </PwdBox>
                </AdornerDecorator>
            </StackPanel>

我有3个文件,其中几乎相同的代码被重复使用。我认为有一种使用通用的自定义控制可以摆脱这种情况的方法。但是,我看不到如何完成的例子。任何线索都很棒。

在您的项目中添加一个新的usercontrol,并将常见的XAML移至该项目。

然后,您可以在任何其他视图中创建此UserControl的实例(用UserControl的实际名称替换为" UserControl1"(:

<!--insert the shared markup here: -->
<local:UserControl1 />

最新更新