C# 如何将属性/属性添加到UserControl,而无需代码延迟?

C# 如何将属性/属性添加到UserControl,而无需代码延迟?,c#,wpf,properties,attributes,C#,Wpf,Properties,Attributes,首先,是否可以在没有代码隐藏的情况下向WPF UserControl添加属性 如果没有,那么假设我有一个自定义UserControl,如下所示: <UserControl x:Class="Example.Views.View" xmlns:vm ="clr-Example.ViewModels" xmlns:view ="clr-Example.Views" ... > <UserControl.DataContex

首先,是否可以在没有代码隐藏的情况下向WPF UserControl添加属性

如果没有,那么假设我有一个自定义UserControl,如下所示:

<UserControl x:Class="Example.Views.View"
         xmlns:vm ="clr-Example.ViewModels"
         xmlns:view ="clr-Example.Views"
         ... >
   <UserControl.DataContext>
     <vm:ViewModel/>
   </UserControl.DataContext>

   <Button Background="Transparent" Command="{Binding ClickAction}">
     <Grid>
        ...
        <Label Content="{Binding Description}"/>
     </Grid>
   </Button>
</UserControl>
...
<UserControl.Resources>
    <ResourceDictionary>
        <command:ButtonGotClicked x:Key="gotClicked" />
    </ResourceDictionary>
</UserControl.Resources>
<Grid>
    <view:FuelDispenserView  ClickAction="{StaticResource gotClicked}"/>
</Grid> ...
我希望能够设置如下操作:

<UserControl x:Class="Example.Views.View"
         xmlns:vm ="clr-Example.ViewModels"
         xmlns:view ="clr-Example.Views"
         ... >
   <UserControl.DataContext>
     <vm:ViewModel/>
   </UserControl.DataContext>

   <Button Background="Transparent" Command="{Binding ClickAction}">
     <Grid>
        ...
        <Label Content="{Binding Description}"/>
     </Grid>
   </Button>
</UserControl>
...
<UserControl.Resources>
    <ResourceDictionary>
        <command:ButtonGotClicked x:Key="gotClicked" />
    </ResourceDictionary>
</UserControl.Resources>
<Grid>
    <view:FuelDispenserView  ClickAction="{StaticResource gotClicked}"/>
</Grid> ...
有谁知道怎么做更好吗


另外,这不仅仅是为了这次行动。我需要添加不同的属性。

您可以使用逻辑将自定义属性添加到用户控件中,但看起来您必须在不同视图中为ClickAction定义不同的行为,因此我不确定它是否对您有用。我建议您使用routed命令和-在这种情况下可能会有所帮助。

但是您的第一个代码示例是在没有代码落后的情况下执行此操作的正确方法。这有什么不对?我应该举一个不同的例子。我想添加的属性类型不重要。我只需要一种简单而好的方法来向XAML用户控件添加属性,而不需要任何代码延迟。