Mam problem z sformułowaniem ciągu XAML, który będzie łączył się z konkretnym elementem w tablicy wielowymiarowej.WPF Wiązanie do tablicy wielowymiarowej w Xaml
DataContext zawiera następujące linie:
private String[] _OneDimension = { "[0]", "[1]" };
private String[][] _Jagged = { new String[] { "[0,0]", "[0,1]" }, new String[] { "[1,0]", "[1,1]" } };
private String[,] _TwoDimension = { { "[0,0]", "[0,1]" }, { "[1,0]", "[1,1]" } };
public String[] OneDimension { get { return _OneDimension; } }
public String[][] Jagged { get { return _Jagged; } }
public String[,] TwoDimension { get { return _TwoDimension; } }
XAML zawiera następujące linie:
<StackPanel>
<Button Content="{Binding OneDimension[1]}" Width="100" Height="50" />
<Button Content="{Binding Jagged[1][1]}" Width="100" Height="50" />
<Button Content="{Binding TwoDimension[1][1]}" Width="100" Height="50" />
</StackPanel>
Wiązanie OneDimension
i Jagged
pracy, jak oczekiwano. Wiązanie z TwoDimension
nie działa i wygląda na niepoprawne, jednak XAML nie pozwala mi używać separatora ,
, więc nie wiem, jak powiązać z tablicą dwuwymiarową.
to:
<Button Content="{Binding TwoDimension[1,1]}" Width="100" Height="50" />
nie kompiluje ponieważ XAML zostanie zinterpretowane jako posiadające dwa argumenty za wiązanie konstruktora. Czy jest jakiś sposób na ucieczkę od parsera lub czy istnieje inny sposób pisania tego, o czym nie wiem?
EDIT:
Właśnie dowiedziałem się, że jest możliwe, aby uciec separator jak ten
<Button Content="{Binding TwoDimension[1\,1]}" Width="100" Height="50" />
lub po prostu otoczyć argument ze znacznikami jak ten
<Button Content="{Binding 'TwoDimension[1,1]'}" Width="100" Height="50" />
Jednak ta linia prowadzi teraz do wyjątku: System.ArgumentException
{"Das Array war kein eindimension ales Array. "} unfortunatelly C# instalował się w moim ojczystym języku - irytujące jak gówno ... więc to z grubsza tłumaczy się na {" The Array nie był onedimensionale Array. "}
Czy w ogóle nie można wiązać tablic wielowymiarowych?
O ile mi wiadomo, nie jest możliwe wiązanie tablic wielowymiarowych w czystym 'Xaml', trzeba będzie stworzyć' IValueConverter' do wykonania pracy. –
Hmmm, aby to zrobić, musiałbym znać typ ... to byłaby Array ... ale istnieje ValueConverter dla tablicy - jestem tego pewien. Czy mogę wstrzyknąć moje urządzenie? – Johannes
Spróbuj tego linku. Mam nadzieję, że pomaga https://nicoschertler.wordpress.com/2014/05/22/binding-to-a-2d-array-in-wpf/ –