gpt4 book ai didi

xamarin.forms - 代码隐藏中的 BindingMode=TwoWay

转载 作者:行者123 更新时间:2023-12-04 15:25:46 26 4
gpt4 key购买 nike

编辑:为糟糕的标题道歉,显然像“在代码隐藏中设置绑定(bind)模式”之类的东西不符合 SO 的高度模糊要求。一个明显比当前标题更明显的标题。

原文:我正在尝试在其数据选择器模板后面的代码中设置我的 ListView 的绑定(bind)。我这样做的原因,正如我怀疑的那样(因为在不同的模板选择器中做了类似的事情修复了它),一旦你退出那个页面,android 似乎仍然包含对它的引用,然后抛出一个 amarin.forms.platform。 android.viewcellrendererA 处置对象异常。

我当前的 xaml 如下所示:

<StackLayout Orientation="Vertical" 
Padding="0, 20, 0, 0"
HorizontalOptions="FillAndExpand"
VerticalOptions="StartAndExpand">

<Label
x:Name="LabelName"
FontAttributes="Bold"
TextColor="Black"
FontSize="14"
VerticalOptions="Start"
HorizontalOptions="FillAndExpand"/>


<ListView x:Name="MultiselectList"
SeparatorVisibility="None"
RowHeight="30"
Margin="0, 10, 0, 0"
VerticalOptions="FillAndExpand"
HorizontalOptions="StartAndExpand"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListView.ItemTemplate>
<DataTemplate>
<customcontrols:NoHighlightCell>
<StackLayout Orientation="Horizontal"
HorizontalOptions="FillAndExpand"
VerticalOptions="StartAndExpand">

<Image
x:Name="image"
Source="{Binding ImageUrl}"
VerticalOptions="StartAndExpand"
HorizontalOptions="Start"
Margin="0, 2, 0, 0"
WidthRequest="15"
HeightRequest="15" />

<Label
x:Name="name"
Text="{Binding Name}"
TextColor="Black"
VerticalOptions="StartAndExpand"
FontSize="14"
HorizontalOptions="Start"/>
</StackLayout>
</customcontrols:NoHighlightCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>


<Label Text="Selection required"
TextColor="Red"
Margin="0, 10, 0, 0"
IsVisible="{Binding ValidationRequired}"
VerticalOptions="StartAndExpand"
HorizontalOptions="FillAndExpand"
FontSize="14"/>

</StackLayout>

下面是我的代码:

private SoapNoteControlsViewModel viewModel;

public SelectListTemplate()
{
InitializeComponent();
}

protected override void OnDisappearing()
{
base.OnDisappearing();
}

protected override void OnAppearing()
{
base.OnAppearing();

LabelName.Text = viewModel.Label;

MultiselectList.ItemsSource = viewModel.CheckboxItems;
MultiselectList.SelectedItem = viewModel.SelectedItem;
//how would i set the BindingMode here? Doing .SetBinding doesn't seem to do it.

}

protected override void OnBindingContextChanged()
{
try
{
base.OnBindingContextChanged();

if(BindingContext == null)
{
return;
}

viewModel = BindingContext as SoapNoteControlsViewModel;

} catch (Exception e)
{
Console.WriteLine(e);
}
}
}

我尝试执行 .SetBinding,但它一直说 BindingMode 是一种类型(假设它是一个枚举)。查看 MSDN 上的一些示例并没有真正帮助

最佳答案

你会这样做:

MultiselectList.SetBinding(ListView.ItemsSourceProperty, nameof(viewModels.CheckboxItems), BindingMode.TwoWay);
  1. 第一个参数是您要绑定(bind)的属性 - 例如ItemsSource
  2. 第二个参数是要查找的属性的名称 - 例如你的 viewModel 的 CheckBoxItems。此集合将绑定(bind)/填充到列表中。
  3. 最后一个参数是您想要实现的 - BindingMode。你说它是一个枚举是正确的,所以在这里我们可以将它设置为 BindingMode.TwoWay

供引用:BindingModeRemarks page .

关于xamarin.forms - 代码隐藏中的 BindingMode=TwoWay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62288564/

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