我在系結 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.
}
錯誤:

uj5u.com熱心網友回復:
正如@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; }
}
輸出: 在此處輸入影像描述
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313962.html
