2015-11-03 5 views
0

Я пытаюсь связать цвет фона с шаблоном элемента, содержащим в нем сетку. Я хочу, чтобы в зависимости от статуса цвет фона каждого элемента в списке должен быть подсвечен автоматически. Так что я делаю это, но цвет не отображается на соответствующем элементе.so, как связать фон сетки, чтобы изменить цвет. Xaml код:Привязка цвета фона в селекторе длинного списка

<phone:LongListSelector x:Name="ResultListBox" 
       Margin="35,10,35,-25" 
      ItemsSource="{Binding Country}" 
       ItemTemplate="{StaticResource CustomList}" 
     Height="436" SelectionChanged="ResultListBox_SelectionChanged" Loaded="Listbox_loaded"> 

<UserControl.Resources> 
    <DataTemplate x:Key="CustomList"> 
     <Grid Margin="5,0,10,5" Tag="{Binding Name}" x:Name="CountryGrid" Tap="BorderColor" > 
      <Grid.Background> 
       <SolidColorBrush Color="{Binding HighlightBackgroundColor}" /> 
      </Grid.Background> 

      <Grid.ColumnDefinitions> 

       <ColumnDefinition Width="450"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="45"></RowDefinition> 

      </Grid.RowDefinitions> 


      <Border VerticalAlignment="Center" x:Name="HighlightBG" HorizontalAlignment="Left" Grid.Column="0" Margin="0,5,0,0" Height="70" CornerRadius="0,10,10,0" Grid.Row="0" > 
       <StackPanel Orientation="Vertical" Margin="0,5,0,0" HorizontalAlignment="Center" > 
        <TextBlock Text="{Binding Name}" x:Name="nametextblock" VerticalAlignment="Top" TextWrapping="Wrap" Foreground="White" FontSize="30" HorizontalAlignment="Center" ></TextBlock> 


       </StackPanel> 
      </Border> 
     </Grid> 
    </DataTemplate> 
</UserControl.Resources> 




c# code snippet: 
public partial class ListPopup : UserControl,INotifyPropertyChanged 
{ 
    public ListPopup() 
    { 
     InitializeComponent(); 
     this.Loaded += ListPopup_Loaded; 
     this.IsSelected = false; 
     //, INotifyPropertyChanged 
     this.NonHighlightColor = new SolidColorBrush(Colors.Transparent); 
     this.HighLightColor = new SolidColorBrush(Colors.Red); 

    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    protected void OnPropertyChanged(string name) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(name)); 
     } 
    } 
    //////////// 

    private bool _is_selected; 
    public bool IsSelected 
    { 
     get { return _is_selected; } 
     set 
     { 
      _is_selected = value; 
      OnPropertyChanged("HighlightBackgroundColor"); 
     } 
    } 

    public SolidColorBrush HighlightBackgroundColor 
    { 
     get { if (IsSelected) return HighLightColor; else return NonHighlightColor; } 
    } 

    private SolidColorBrush HighLightColor { get; set; } 

    private SolidColorBrush NonHighlightColor { get; set; } 

} 

ответ

0

Вы обнажая Brush, но связывая его как Color. Просто измените свой код XAML:

<Grid Margin="5,0,10,5" Background="{Binding HighlightBackgroundColor}" Tag="{Binding Name}" x:Name="CountryGrid" Tap="BorderColor" > 
+0

эй я пробовал это слишком, но до сих пор никакого результата – Kam

+0

@Kam Что не является тип 'собственности Country'? Поскольку 'HighlightBackgroundColor' должен быть определен на том же объекте, связанном с LongListSelector –

+0

, страна является моделью моего приложения, которое связывает список стран в селекторе длинного списка. Я просто хочу, чтобы страна, выбранная в списке, имела изменение цвета фона. – Kam

Смежные вопросы