gpt4 book ai didi

c# - 使用 WPF、MVVM 和 DP 的用户控制

转载 作者:行者123 更新时间:2023-12-03 11:02:12 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





XAML binding not working on dependency property?

(1 个回答)



Issue with DependencyProperty binding

(3 个回答)


3年前关闭。




我正在尝试设计一个 UserControl,特别是 NumericUpDownControl。

<UserControl x:Class="SettingsDialog.Controls.NumericUpDownControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:SettingsDialog.Controls"
xmlns:viewModels="clr-namespace:SettingsDialog.ViewModels"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="18"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBox Text="{Binding Value}" Grid.Row="0" Grid.RowSpan="2" Height="20" VerticalContentAlignment="Center"/>
<RepeatButton Content="5" Grid.Column="1" Grid.Row="0" FontSize="8" Height="10" FontFamily="Marlett" VerticalContentAlignment="Center"/>
<RepeatButton Content="6" Grid.Column="1" Grid.Row="1" FontSize="8" Height="10" FontFamily="Marlett" VerticalContentAlignment="Center"/>
</Grid>
</UserControl>

在 UserControl 的代码隐藏中,我有以下内容:
  public static readonly DependencyProperty ValueProperty =
DependencyProperty.Register(
"Value", typeof(int),
typeof(NumericUpDownControl)
);

public int Value
{
get => (int)GetValue(ValueProperty);
set => SetValue(ValueProperty, value);
}

它工作正常,因为我可以像这样在 MainWindow.xaml 中使用它:
<controls:NumericUpDownControl Width="100" Value="10"/>

但问题是我还想要一个 ViewModel 用于我的 UserControl。当我设置它时, TextBox在我的 UserControl 中无法识别 Value不再依赖属性。我怎样才能拥有一个 ViewModel 并同时设置 Value从用户控件之外?我做错了什么吗?

最佳答案

这应该绑定(bind) Text TextBox 的属性(property)到Value UserControl 的属性(property)不管它的DataContext :

<TextBox Text="{Binding Value, RelativeSource={RelativeSource AncestorType=UserControl}}" Grid.Row="0" Grid.RowSpan="2" Height="20" VerticalContentAlignment="Center"/>

关于c# - 使用 WPF、MVVM 和 DP 的用户控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52722033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com