2017-03-18 97 views
0

後,我是新來的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}」 –

回答

0

我認爲你可以這樣做:

在你的模型,你應該有一個「文字顏色」屬性和「選擇」屬性

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

很奇怪。你有下載回購? –

相關問題