Byłem ciekawy, jak nauczyłem się więcej na temat wiązania z WPF, czy trzeba ustawić kontekst danych, aby po prostu ustawić {ścieżkę wiążącą =} jednej właściwości? Byłem po prostu ciekawy, ponieważ uczyłem się z przykładu kodu MVVM z tyłu i wydaje mi się, że mam sytuację, którą chcę powiązać z czymś, co nie jest w kontekście danych ViewModel i wolałbym klasę pośrednią niż kod za referencją w wiążący. Czy mógłbym mieć kolejną referencję klasy I dla drugiego datakonteksu lub czegoś podobnego? Czy mogę ustawić klucz zasobów i jakoś odwołać się do klasy? Ostatecznie chcę, jeśli to możliwe, uzyskać dostęp do właściwości w oddzielnej klasie.Wiązanie właściwości z klasy do XAML bezpośrednio
EG:
<Window x:Class="WPFTestBinding.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:da="clr-namespace:WPFTestBinding.DataAccess"
xmlns:main="clr-namespace:WPFTestBinding"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel>
<Label Content="Here we go: "/>
<TextBox x:Name="testtext" />
<Label Height="50" />
<!-- CODE BELOW WILL NOT WORK -->
<TextBox Text="{Binding Path=TestID}" x:Name="testtext2" />
</StackPanel>
</Grid>
</Window>
wiem, że mogę ustawić wartość TextBox w kodzie tyłu i to działa na przykładzie właściwość, ale nie będzie za wiązanie. Czy istnieje sposób na proste wiązanie w locie dla właściwości z klas? Nie znalazłem prostego przykładu, który to robi i szukałem w Internecie, a podczas uczenia się większość przykładów to bardzo intensywne zestawy ustawień kontekstów danych lub bardzo proste statyczne przykłady zasobów. Byłem po prostu ciekawy, czy mógłbyś użyć {Binding Path =} i rozszerzyć jakąś inną właściwość w locie, aby uzyskać kod na zajęciach.
Reszta kodu jest dość prosta:
namespace WPFTestBinding.DataAccess
{
class Test
{
public string TestID { get { return "This is my test"; } }
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataAccess.Test t = new Test();
testtext.Text = t.TestID; // code behind works easily
}
}
To jest dokładnie to, czego szukałem. Wiedziałem, że istnieje prosta metoda rozszerzenia przestrzeni nazw w XAML, którego mi brakowało. – djangojazz
@ kusi581, Ty też rozwiązujesz mój problem. –