Merhaba arkadaslar;
microsoft.Toolkit.Mvvm paketi ile Dictionary değiştiğinde PropertyChanged eventini fırlatmıyor. Hiç bir şekilde View'i güncellemeyi başaramadım. Yardımcı olursanız sevinirim.
viewModel
[ObservableProperty]
private string programName;
[ObservableProperty]
private string programValue;
[ObservableProperty]
private Dictionary<string, string> monday = new Dictionary<string, string>();
[ICommand]
public void AddProgram ()
{
Monday.Add(ProgramName, ProgramValue);
SetProperty<Dictionary<string, string>>(ref monday, Monday);
ProgramName = null;
ProgramValue = null;
}
xaml dosyasi bu sekilde
<VerticalStackLayout>
<HorizontalStackLayout Padding="10,25">
<Label
Text="Gun Seciniz"
VerticalOptions="Center"
Margin="0,0,20,0"
HorizontalOptions="Center" />
<Picker SelectedItem="pazartesi" SelectedIndex="{Binding SelectedDay, Mode=TwoWay}" WidthRequest="200" ItemsSource="{Binding Days}" />
<Entry Text="{Binding ProgramName, Mode=TwoWay}" Placeholder="Haraket adi" MinimumWidthRequest="60" Margin="30,0,0,0"/>
<Entry Text="{Binding ProgramValue, Mode=TwoWay}" Placeholder="Talimat" MinimumWidthRequest="60" Margin="10,0,0,0" />
<Button
Command="{Binding AddProgramCommand}"
Text="Haraket Ekle" Margin="10,0,0,0" />
</HorizontalStackLayout>
<CollectionView Margin="20,10" HorizontalOptions="CenterAndExpand" ItemsSource="{Binding Monday,Mode=OneWay}">
<CollectionView.Style>
<Style TargetType="CollectionView">
<Setter Property="IsVisible" Value="False"/>
<Style.Triggers>
<DataTrigger TargetType="CollectionView" Binding="{Binding showDay}" Value="Monday">
<Setter Property="IsVisible" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</CollectionView.Style>
<CollectionView.ItemTemplate>
<DataTemplate >
<Grid x:DataType="{x:Type M:ProgramItem}"
RowDefinitions="40"
ColumnDefinitions="200,*"
>
<Border BackgroundColor="#536D9E" Grid.Column="0" MinimumHeightRequest="30" >
<Label Text="{Binding Key}" TextColor="AliceBlue" HorizontalOptions="FillAndExpand" VerticalOptions="Center" Padding="10" />
</Border>
<Border BackgroundColor="#536D9E" Grid.Column="1" MinimumHeightRequest="30" >
<Label Text="{Binding Value}" TextColor="AliceBlue" HorizontalOptions="FillAndExpand" VerticalOptions="Center" Padding="10" />
</Border>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</VerticalStackLayout>
codebehind su sekilde
public partial class MainPage : ContentPage
{
public MainPage (MainViewModel mainViewModel)
{
InitializeComponent();
BindingContext =mainViewModel;
}
}