我在WPF中比較新,我面臨一個問題。
我必須實現從數據庫(也是數據)獲取UI(xaml)的表單。 將在運行時創建的這些表單中的每一個都會有不同的控制。
儘管我不同意這種方法,但我必須遵循我的老闆方向。
問題在於驗證。
我們決定使用驗證規則來做到這一點。
所以我試圖用AgeRangeRule來實現基本的例子。WPF使用驗證規則動態加載xaml
<TextBox Name="textBox1" Width="50" FontSize="15"
Validation.ErrorTemplate="{StaticResource validationTemplate}"
Style="{StaticResource textBoxInError}"
Grid.Row="1" Grid.Column="1" Margin="2">
<TextBox.Text>
<Binding Path="Age" Source="{StaticResource ods}"
UpdateSourceTrigger="PropertyChanged" >
<Binding.ValidationRules>
<c:AgeRangeRule Min="21" Max="130"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
,我得到的錯誤,當我加載XAML是
Additional information: 'Cannot create unknown type '{clr-namespace:WpfDynamicTest1}AgeRangeRule'.'
,並在這一行:
<c:AgeRangeRule Min="21" Max="130"/>
注:C被定義爲:
xmlns:c="clr-namespace:WpfDynamicTest1"
我該如何克服這個錯誤?
我遇到了類似的錯誤與ControlTemplate和樣式的錯誤,但我將它們移動到Application.xaml並解決了我的問題。
我可以做一些類似的參考嗎?
編輯:附加信息: 如何加載XAML:
的 「細胞」 的形式具有以下屬性:
Public Property FormId() As Integer
Get
Return miFormId
End Get
Set(ByVal value As Integer)
miFormId = value
FormCharacteristics(value)
End Set
End Property
Public Property UI() As String
Get
Return msUI
End Get
Set(ByVal value As String)
msUI = value
Dim rootObject As DependencyObject = XamlReader.Parse(value)
Me.Content = rootObject
End Set
End Property
所以,當我叫我做這個形式:
Dim winD As New winDynamic
winD.FormId = 4
winD.Show()
FormCharacteristics填充了msUI和UI被加載。
是否確定ValidationRule「AgeRangeRule」在名爲WpfDynamicTest1的名稱空間中正確定義? – Younes 2014-12-05 10:47:54
是的,如果我沒有在運行時從數據庫加載xaml並且像往常一樣代碼正在工作 – Nianios 2014-12-05 10:50:34