WPF Binding to a property of a static class
Binding to a property of a static class is quite straight forward.
The binding string looks like this:
{x:Static s:MyStaticClass.StaticValue2}
For an example do this:
- Create a new folder in your project called Statics.
- Add the following class to the Statics folder.
1234567891011121314151617181920
using
System;
namespace
BindingToStaticClassExample.Statics
{
public
static
class
MyStaticClass
{
static
MyStaticClass()
{
Title =
"Binding to properties of Static Classes"
;
StaticValue1 =
"Test 1"
;
StaticValue2 =
"Test 2"
;
StaticValue3 =
"Test 3"
;
}
public
static
String Title {
get
;
set
; }
public
static
String StaticValue1 {
get
;
set
; }
public
static
String StaticValue2 {
get
;
set
; }
public
static
String StaticValue3 {
get
;
set
; }
}
}
- Add a reference to the BindingToStaticClassExample.Statics namespace. (See line 4.)
- Bind the title to the Title string value of MyStaticClass.
- Change the <Grid> to a <StackPanel> (not required just for ease of this example).
- Add TextBox elements and bind them to the two string values in MyStaticClass object.
1234567891011121314151617
<
Window
x:Class
=
"BindingToStaticClassExample.MainWindow"
xmlns:s
=
"clr-namespace:BindingToStaticClassExample.Statics"
Title
=
"{x:Static s:MyStaticClass.Title}"
Height
=
"350"
Width
=
"525"
>
<
StackPanel
>
<
TextBox
Text
=
"{x:Static s:MyStaticClass.StaticValue1}"
/>
<
TextBox
Text
=
"{x:Static s:MyStaticClass.StaticValue2}"
/>
<!-- Not supported and won't work
<TextBox>
<TextBox.Text>
<Binding Source="{x:Static s:MyStaticClass.StaticValue3}" />
</TextBox.Text>
</TextBox>
-->
</
StackPanel
>
</
Window
>
You now know how to bind to properties of a static class.