如何改变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; 
     } 
    } 
+0

我看到你绑定了你的标签的文本。你为什么不绑定TextColor呢? –

+0

我尝试过......但这些更改并未反映在母版页上。只有在主页面上选择项目后,才会将文本颜色第一次绑定为文本颜色 – sandy

+0

您的绑定模式有两种方式吗? => TextColor =“{Binding TitleColor,Mode = TwoWay}” –

我认为你可以这样做:

在你的模型,你应该有一个“文字颜色”属性和“选择”属性

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

+0

更改了回购。现在我使用IValueConverter将选中的颜色更改为 –

+0

也尝试了上面的代码,但仍然是同样的问题。点击后标题颜色不变绿色变为黑色。 – sandy

+0

很奇怪。你有下载回购? –