Witam, w moim projekcie korzystam ze wzorca MVVM . W viewmodelach dołączam interface inotifypropertychanged Jest jedna zmienna, którą chcę zbindować w dwóch oddzielnych widokach . W widoku, który jest bezpośrednio podpięty pod view model - wszystko jest fajnie , działa, wartość się zmienia. W innym widoku, w którym chcę wykorzystać tą samą zmienną niestety nie jest już tak kolorowo.
Próbowałem to zrobić poprzez staticresource , viewmodel dziedziczyl z viewmodelu , obie klasy dziedziczyly z klasy w której znajdowal sie properties + inotifypropertychanged. Nic nie pomogło. Proszę o pomoc ...
0
1
Masz błąd w 73 linijce.
0
Dzięki!! Właśnie tam był błąd, teraz działa wszystko poprawnie ! O to chodziło !
0
Dzięki!! Właśnie tam był błąd, teraz działa wszystko poprawnie ! O to chodziło !
nie ma za co. Zawsze do usług.
0
Kto wpuścił na Politechnikę Krakowską gościa, który nie potrafi zajarzyć prostej ironii i załapać, że nie można pomóc nie widząc kodu?
0
Zrozumiałem ironie bardzo dobrze, tylko musiałem stworzyć przykładowy projekt obrazujący mój problem. Oto kody:
<UserControl x:Class="Aplikacja_desktopowa.CustomerView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid x:Name="LayoutRoot" Background="White" Height="150" Width="300"
DataContext="{Binding Source={StaticResource Locator}, Path=CustomerViewModel}">
<Button Content="Button" HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" Command="{Binding LogowanieCommand}"/>
<Button Content="Button" IsEnabled="{Binding IsEnabled}" HorizontalAlignment="Left" Margin="112,104,0,0" VerticalAlignment="Top" Width="76"/>
</Grid></UserControl>
<Window x:Class="Aplikacja_desktopowa.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:Aplikacja_desktopowa"
Title="MainWindow" Height="350" Width="525"
DataContext="{Binding Source={StaticResource Locator}, Path=[MainPageViewModel]}">
<StackPanel>
<TextBlock Text="{Binding Path=BannerText}" FontFamily="Verdana" FontSize="18" FontWeight="Bold" HorizontalAlignment="Center" />
<Button Content="Button" IsEnabled="{Binding Source={StaticResource Locator}, Path=CustomerViewModel.IsEnabled}"/>
<my:CustomerView />
</StackPanel>
</Window>
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Windows.Input;
using System.Threading;
using System.Collections.ObjectModel;
// Toolkit namespace
using Aplikacja_desktopowa.Annotations;
using SimpleMvvmToolkit;
namespace Aplikacja_desktopowa
{
/// <summary>
/// This class extends ViewModelDetailBase which implements IEditableDataObject.
/// <para>
/// Specify type being edited <strong>DetailType</strong> as the second type argument
/// and as a parameter to the seccond ctor.
/// </para>
/// <para>
/// Use the <strong>mvvmprop</strong> snippet to add bindable properties to this ViewModel.
/// </para>
/// </summary>
public class CustomerViewModel : INotifyPropertyChanged
{
private DelegateCommand _przycisk;
public ICommand LogowanieCommand
{
get
{
if (_przycisk == null)
_przycisk = new DelegateCommand(funkcja1, funkcja2);
return _przycisk;
}
}
public void funkcja1()
{
MessageBox.Show("Odblokowywanie przycisku");
IsEnabled = true;
}
public bool funkcja2()
{
return true;
}
private bool _isEnabled;
public bool IsEnabled
{
get { return _isEnabled; }
set
{
_isEnabled = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
szablon simple mvvm
Ogólnie to chcę, by wszystkie buttony się odblokowały