2010-08-10 82 views
-1

好吧,严重的家伙我厌倦了WPF的错误和硬处理,看我有很多按钮被指定为代表房间,我想绑定到一个工具提示,以获得占用者的名称和来自数据库的信息。 我无法找到如何做到这一点。 感谢Neptune2 [刚刚从火星来]

+0

您可能需要先更改标题。 – 2010-08-10 16:14:18

+0

你想添加工具提示到WPF中的按钮吗?你在问什么? – Siege898 2010-08-10 16:30:50

+1

Nanu。纳努。 MEEP MEEP。咩。 – 2010-08-10 16:31:50

回答

3
  1. 打造RoomViewModel类暴露DescriptionIsAvailableOtherInformation等性能,并实现INotifyPropertyChanged。您如何填充这些属性取决于您的应用程序。

  2. 建立一个RoomsViewModel类,公开名为RoomsObservableCollection<RoomViewModel>

  3. 创建DataTemplate s为RoomViewModelRoomsViewModel类(见下文)。

  4. 创建一个RoomsViewModel类的实例并填充它的Rooms集合。

  5. 创建一个ContentPresenter并将其Content属性设置为您的RoomsViewModel类的实例。

典型数据模板可能是这样的:

<DataTemplate x:Type="{local:RoomsViewModel}"> 
    <ItemsControl ItemsSource="{Binding Rooms}"> 
     <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel/> 
     </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
    </ItemsControl> 
</DataTemplate> 

<DataTemplate x:Type="{local:RoomViewModel}"> 
    <Button 
     Margin="10" 
     IsEnabled="{Binding IsAvailable}" 
     ToolTip="{Binding OtherInformation}" 
     Content="{Binding Description}"/> 
</DataTemplate> 

未来的改进:

  1. 尝试使用的UniformGrid而不是WrapPanel

  2. 阅读乔希史密斯的文章Using RoutedCommands with a ViewModel in WPF并使用该处描述的技术在RoomViewModel上创建ReserveRoomCommand属性。将RoomViewModel数据模板中的CommandBinding设置为{Binding ReserveRoomCommand}。请注意,一旦你这样做,你将删除绑定到IsEnabled,因为命令绑定会自动启用和禁用按钮。

  3. 如果您需要重新使用此用户界面,请将数据模板和内容展示器移至UserControl

+1

+1为愚蠢的问题和认真的答案惊人的对比。 – egrunin 2010-08-10 18:34:36

+0

罗伯特,这个问题很容易被删除以及关闭。如果是这样,请再次提问并回答问题。保存足够有用。 – 2010-08-10 20:00:40