c# - 绑定从方法获得的属性,返回对象
问题描述
我在绑定 XAML 文件时遇到问题。有一个DataContext
类Template
有一个GetDisplayParams()
方法。方法GetDisplayParams()
返回一个TemplateDisplayParams
具有Width
属性的类型的对象。我只需要绑定TextBox
到这个属性,但对我没有任何作用。
.xaml:
<TextBox Text="{Binding GetDisplayParams.Width}"/>
.axaml.cs:
public TemplateCompositeAttributesSettingsView(Scripting.Template dataContext) : this()
{
DataContext = dataContext;
Console.WriteLine( ((Scripting.Template)DataContext).GetDisplayParams().Width ); // return int.
}
解决方案
正如@BionicCode 所说,在 WPF 中,我认为 XAML 中的 Avalonia 无法绑定到方法。因此,我必须创建一个 TemplateCompositeAttributesSettingsViewModel 并在那里指定一个公共属性,然后将 DataContext TextBox 绑定到这个 ViewModel。
.xaml
<StackPanel Name="MinWidthMinHeightStackPanel" Margin="3.5" Orientation="Horizontal">
<!--TODO-->
<TextBox Text="{Binding MinWidth}"/>
<TextBlock Margin="20,0,20,0" Text="x" VerticalAlignment="Center"/>
<!--TODO-->
<TextBox Text="{Binding MinHeight}"/>
</StackPanel>
TemplateCompositeAttributesSettingsView.cs:
public TemplateCompositeAttributesSettingsView(Scripting.Template dataContext) : this()
{
DataContext = dataContext;
var templateCompositeAttributesSettingsViewModel = new TemplateCompositeAttributesSettingsViewModel( dataContext );
this.FindControl<StackPanel>( "MinWidthMinHeightStackPanel" ).DataContext = templateCompositeAttributesSettingsViewModel;
}
TemplateCompositeAttributesSettingsViewModel.cs:
class TemplateCompositeAttributesSettingsViewModel : ViewModelBase
{
public TemplateCompositeAttributesSettingsViewModel(Scripting.Template DataContext)
{
this.DataContext = DataContext;
}
public int MinWidth
{
get => DataContext.GetDisplayParams().Width;
}
public int MinHeight
{
get => DataContext.GetDisplayParams().Height;
}
public Scripting.Template DataContext { get; set; }
}
输出: 在此处输入图像描述
推荐阅读
- r - 我应该如何有效地按值标记数据框的行?
- swift - 比较两个列表以查看缺少的内容
- mysql - 为什么触发器上的“else”被认为是错误的?
- kotlin - 如何模拟字符串扩展?
- python - Python仅通过键添加到字典
- javascript - 嵌入谷歌地图或日历时出现错误“加载资源失败:服务器响应状态为 404()”
- python - 在 Anaconda 中使用 distutils 和 Microsoft Visual Studio 构建 Boost 扩展
- impersonation - 违反模拟政策,我收到一条消息,指出删除可能误导用户的元数据
- forms - 如何从另一个屏幕重置 Flutter 中的表单?
- c# - 为什么有时我需要将 nuget 包添加到正在运行的实际项目中