通过ObjectDataProvider可以实现数据源与方法绑定
App.xml
<!-- 引入System命名空间 clr-namespace:System;assembly=mscorlib--> <Application x:Class="WpfTest1.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfTest1" xmlns:sys="clr-namespace:System;assembly=mscorlib" StartupUri="MainWindow.xaml"> <Application.Resources> <ObjectDataProvider x:Key="odp" ObjectType="{x:Type local:ObjectDataSource}" MethodName="Add"> <ObjectDataProvider.ConstructorParameters> <sys:Int32>7</sys:Int32> <sys:Int32>8</sys:Int32> </ObjectDataProvider.ConstructorParameters> <ObjectDataProvider.MethodParameters> <sys:String>x+y=</sys:String> </ObjectDataProvider.MethodParameters> </ObjectDataProvider> </Application.Resources> </Application>
ObjectDataSource.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WpfTest1 { public class ObjectDataSource { private int x; private int y; public ObjectDataSource(int x, int y) { this.x = x; this.y = y; } public string Add(string prefix) { return prefix + (x + y); } } }
MainWindow.xaml
<Window x:Class="WpfTest1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfTest1" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <TextBlock Text="{Binding Source={StaticResource odp}}"/> </Grid> </Window>
效果