我正在制作一个聊天程序。
我使用 XAML 设计了聊天室列表。
<GridViewColumn x:Name="gridViewColumn_IsNeedPassword">
<GridViewColumn.CellTemplate>
<DataTemplate>
<PasswordBox x:Name="passwordBox_PW" MinWidth="100" IsEnabled="{Binding Path=IsNeedPassword}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn x:Name="gridViewColumn_EntryButton">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Background="Aqua" Click="button_Entry_Click">
<StackPanel Orientation="Horizontal">
<Image Height="Auto" Width="Auto" Source="Resources/login.png"/>
<TextBlock Text="{Binding Converter={StaticResource EntryButtonConverter}}" VerticalAlignment="Center"/>
</StackPanel>
<Button.Tag>
<MultiBinding Converter="{StaticResource EntryButtonTagConverter}">
<Binding Path="ID"/>
<Binding Path="IsNeedPassword"/>
<Binding ElementName="passwordBox_PW" Path="Password"/>
</MultiBinding>
</Button.Tag>
</Button>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn x:Name="gridViewColumn_DeleteButton">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Background="Orange" Click="button_Delete_Click" IsEnabled="{Binding Path=Master, Converter={StaticResource DeleteButtonVisibilityConverter}}">
<StackPanel Orientation="Horizontal">
<Image Height="Auto" Width="Auto" Source="Resources/login.png"/>
<TextBlock Text="{Binding Converter={StaticResource DeleteButtonConverter}}" VerticalAlignment="Center"/>
</StackPanel>
<Button.Tag>
<Binding Path="ID"/>
</Button.Tag>
</Button>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView.Columns>
像这样的东西。
现在,gridViewColumn_EntryButton
我需要一些信息,例如RoomID + IsNeedPassword + PasswordText
所以我用了MultiBinding
。
就是EntryButtonTagConverter.Convert
这样。
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string[] result = Array.ConvertAll<object, string>(values, obj =>
{
return (obj == null) ? string.Empty : obj.ToString();
});
// RoomID + IsNeedPassword + PasswordText
return result[0] + '\n' + result[1] + '\n' + result[2];
}
当我调试时,result[2]
,PasswordText
是"{DependencyProperty.UnsetValue}"
但是我输入了PasswordBox
asdftest1234。
我不知道为什么PasswordBox.Password
财产无法访问。
有人有什么想法吗?
谢谢。