Problème
J'ai un ComboBox
et un ToggleButton
sur MainWindow
avec les liaisons dans les deux sens sur leurs propriétés SelectedIndex
et IsChecked
, respectivement. Les propriétés auxquelles ils sont liés sont DependencyProperties (DP) et j'ai un point d'arrêt sur les setters, mais le débogueur ne s'arrête jamais non plus. Je devrais noter que les liaisons devraient fonctionner comme les Initialisers sur le travail de DP et les convertisseurs fonctionnent également. La fenêtre de sortie de VS ne présente également aucun problème.La liaison de données bidirectionnelle n'est pas mise à jour pour ComboBox & ToggleButton?
XAML
<ToggleButton x:Name="tbSortDirection" Width="25" IsChecked="{Binding Path=SortDirection,Converter={StaticResource LDB},Mode=TwoWay,ElementName=mwa,UpdateSourceTrigger=PropertyChanged}">
<ed:RegularPolygon Fill="#FF080808" Height="5" UseLayoutRounding="True" Margin="-2,0,0,0" PointCount="3" Width="6"/>
</ToggleButton>
<ComboBox x:Name="cbSort" Width="100" VerticalAlignment="Stretch" Margin="-5,0,0,0" SelectedIndex="{Binding SelSortIndex,Mode=TwoWay,ElementName=mwa,UpdateSourceTrigger=PropertyChanged}" IsSynchronizedWithCurrentItem="True" >
<ComboBoxItem Content="a"/>
<ComboBoxItem Content="b"/>
<ComboBoxItem Content="v"/>
<ComboBoxItem Content="f"/>
</ComboBox>
code-behind (DPs)
public ListSortDirection SortDirection
{
get { return (ListSortDirection)GetValue(SortDirectionProperty); }
set // BreakPoint here
{
MessageBox.Show("");
SetValue(SortDirectionProperty, value);
UpdateSort();
}
}
public static readonly DependencyProperty SortDirectionProperty =
DependencyProperty.Register("SortDirection", typeof(ListSortDirection), typeof(MainWindow), new PropertyMetadata(ListSortDirection.Ascending));
public int SelSortIndex
{
get { return (int)GetValue(SelSortIndexProperty); }
set // BreakPoint here
{
MessageBox.Show("");
SetValue(SelSortIndexProperty, value);
UpdateSort();
}
}
public static readonly DependencyProperty SelSortIndexProperty =
DependencyProperty.Register("SelSortIndex", typeof(int), typeof(MainWindow), new PropertyMetadata(1));
Essayez de supprimer les éléments supplémentaires dans les setters de vos propriétés de dépendance. Il suffit ensuite d'appeler 'SetValue' et de lui donner un autre coup de feu. – PoweredByOrange
Toujours ne pas casser. Est-ce censé casser les setters? Parce que le débogueur ne casse pas sur les getters? Je vais créer un nouveau projet de test et voir s'il est supposé le faire. –
Le convertisseur est-il appelé? Notez que lorsque vous utilisez 'Path' et' ElementName' dans une liaison, il recherche ce chemin dans l'élément spécifié, pas dans le DataContext. Donc, dans le cas de votre CheckBox, il recherche 'mwa.SortDirection'. Qu'est-ce que 'mwa' de toute façon? Est-ce votre 'MainWindow'? – PoweredByOrange