如何改变masterPageitem的标签文本颜色选择
后,我是新来的Xamarin框架,并想用主详细页 创建一个应用程序,我的确从xamarin网站开通简单的主从导航页面演示 master-detail-page xamarin webise如何改变masterPageitem的标签文本颜色选择
唯一不同的是我用ViewCell里面DataTemplate.In ViewCell我有标签 而不是图像。 点击后MasterPageItems
导航工作正常,但现在我想更改标签文本颜色也。
<ListView x:Name="listView" VerticalOptions="FillAndExpand" SeparatorVisibility="None" RowHeight="50" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding Title}" TextColor="#1ca7ec" FontSize="18"></Label>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var item = e.SelectedItem as MasterPageItem;
if (item != null)
{
Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(ContactsPage)));
masterPage.ListView.SelectedItem = null;
IsPresented = false;
}
}
我认为你可以这样做:
在你的模型,你应该有一个“文字颜色”属性和“选择”属性
public bool Selected { get; set; }
// I think you should not return "Color" type (for strong MVVM) but, for example, a value that you can convert in XAML with a IValueConverter...
public Color TextColor
{
get
{
if (Selected)
return Color.Black;
else
return Color.Green;
}
}
2。在1 - 你XAML你应该有类似
<ListView SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding List}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding Name}" TextColor="{Binding TextColor}" FontSize="18"></Label>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
3-并在视图模型类似
MyModel _selectedItem { get; set; }
public ObservableCollection<MyModel> List { get; set; } = new ObservableCollection<MyModel>();
public MyModel SelectedItem
{
get { return _selectedItem; }
set
{
if (_selectedItem != null)
_selectedItem.Selected = false;
_selectedItem = value;
if (_selectedItem != null)
_selectedItem.Selected = true;
}
}
当您选择列表中的项目,SelectedItem属性变化和Selected属性在模型中成为真或假,改变文字颜色属性(我用PropertyChanged.Fody为INPC)。
希望这有助于 你可以找到一个textColor属性在你的模型,我想你也可以只使用选定的属性上GitHub
而是使用的回购和转换选定的属性设置为颜色的的IValueConverter
更改了回购。现在我使用IValueConverter将选中的颜色更改为 –
也尝试了上面的代码,但仍然是同样的问题。点击后标题颜色不变绿色变为黑色。 – sandy
很奇怪。你有下载回购? –
我看到你绑定了你的标签的文本。你为什么不绑定TextColor呢? –
我尝试过......但这些更改并未反映在母版页上。只有在主页面上选择项目后,才会将文本颜色第一次绑定为文本颜色 – sandy
您的绑定模式有两种方式吗? => TextColor =“{Binding TitleColor,Mode = TwoWay}” –