我正在制作聊天程序,我已经建立了连接服务器的API。
这是API的核心类
public partial class PengChat3ClientSock : IDisposable
好吧,PengChat3ClientSock
有一个Rooms
属性。
public class Room
{
public uint ID { get; private set; }
public string Name { get; private set; }
public string Master { get; internal set; }
public short MaxConnectorNum { get; private set; }
public bool IsNeedPassword { get; private set; }
}
这是房产
public Room[] Rooms { get; private set; }
现在是客户端,我有ListView显示房间列表。
<ListView x:Name="listView_RoomList" Grid.Row="1" Grid.ColumnSpan="2">
</ListView>
我想设计这样的列表视图。
RoomName Master MaxConnectorNum Password(If IsNeedPassword is true = Enable) EntryButton DeleteButton(If Master is I = Enable)
Label Label Label PasswordBox Button Button
Label Label Label PasswordBox Button Button
Label Label Label PasswordBox Button Button
Label Label Label PasswordBox Button Button
顶部是标题。 我想插入像这样的控件。
如果属性Rooms
发生了变化,我想自动更改此ListView
。
太难了吗?但我认为这是可能的。
感谢您的回答。
答案 0 :(得分:2)
如果我没有误解你的问题,试试这个
Room.cs
public class Room
{
public uint ID { get; set; }
public string Name { get; set; }
public string Master { get; set; }
public short MaxConnectorNum { get; set; }
public bool IsNeedPassword { get; set; }
}
XAML
<Window.Resources>
<Style TargetType="{x:Type Button}" x:Key="deleteButtonStyle">
<Setter Property="IsEnabled" Value="False"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Master}" Value="I">
<DataTrigger.Setters>
<Setter Property="IsEnabled" Value="True"></Setter>
</DataTrigger.Setters>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<ListView ItemsSource="{Binding Rooms}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="RoomName">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Content="Label"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Master">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Content="Label"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="MaxConnectorNum">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Label Content="Label"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Password">
<GridViewColumn.CellTemplate>
<DataTemplate>
<PasswordBox IsEnabled="{Binding IsNeedPassword }" MinWidth="100"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="EntryButton">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="Button"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="DeleteButton">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="Button" Style="{StaticResource deleteButtonStyle}">
</Button>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
</StackPanel>
xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext=new ViewModel();
}
}
视图模型
public class ViewModel
{
public ObservableCollection<Room> Rooms { get; set; }
public ViewModel()
{
Rooms = new ObservableCollection<Room>()
{
new Room(){Master="I",IsNeedPassword=false},
new Room(){Master="I",IsNeedPassword=true},
new Room(){Master="j",IsNeedPassword=false},
new Room(){Master="k",IsNeedPassword=true}
};
}
}
输出
![]()