我有一個由四個重疊項目的用戶控件:2米的長方形,橢圓形和拉布勒更改用戶控件的外觀基於狀態
<UserControl x:Class="UserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="50.1" Height="45.424" Background="Transparent" FontSize="24">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="3.303*" />
<RowDefinition Height="40*" />
<RowDefinition Height="2.121*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5.344*" />
<ColumnDefinition Width="40.075*" />
<ColumnDefinition Width="4.663*" />
</Grid.ColumnDefinitions>
<Rectangle Name="Rectangle1" RadiusX="5" RadiusY="5" Fill="DarkGray" Grid.ColumnSpan="3" Grid.RowSpan="3" />
<Ellipse Name="ellipse1" Fill="{Binding State}" Margin="0.016,0.001,4.663,0" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Stroke="Black" IsEnabled="True" Panel.ZIndex="2" />
<Label Name="lblNumber" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Foreground="White" FontWeight="Bold" FontSize="24" Grid.Column="1" Grid.Row="1" Padding="0" Panel.ZIndex="3">9</Label>
<Rectangle Grid.Column="1" Grid.Row="1" Margin="0.091,0,4.663,0" Fill="Blue" Name="rectangle2" Stroke="Black" Grid.ColumnSpan="2" Panel.ZIndex="1" />
</Grid>
這是我的目標,我想控制我的用戶控件的狀態:
Imports System.Data
Imports System.ComponentModel
Public Class BusinessObject
Implements INotifyPropertyChanged
Public logger As log4net.ILog
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Private _state As States
Public Enum States
State1
State2
State3
End Enum
Public Property State() As States
Get
Return _state
End Get
Set(ByVal value As States)
If (value <> _state) Then
_state = value
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("State"))
End If
End Set
End Property
Protected Sub OnPropertyChanged(ByVal name As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(name))
End Sub
我希望能夠改變一個業務對象的狀態,在後面的代碼,並有更改多個圖形的顏色在我的用戶。我不確定如何做綁定。我在代碼背後設置了用戶控件的datacontext,但不確定是否正確。我對WPF和編程一般都很陌生,而且我堅持要從這裏開始。任何建議將不勝感激!
感謝您的回覆。我喜歡這種方法。但我有一個問題聲明本地命名空間。我的解決方案被命名爲'Application1'。所以我將localnamespace聲明爲xmlns:localNamespace =「clr-namespace:Application1」。它不會讓我將其聲明爲的xmlns:localNamespace =「CLR的命名空間:Application1.BusinessObject」它說,它不包含在裝配 – John 2011-03-17 16:41:59
@約翰這很好,只是改變你的'X:Static'到'localNamespace:BusinessObject的.States.State1' – Rachel 2011-03-17 17:03:49