<Window x:Class="GuessFigure.PlayingGameWindow"
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:GuessFigure"
mc:Ignorable="d"
Title="PlayingGame" Height="300" Width="300">
<Grid
xmlns:c="clr-namespace:GuessFigure.Model">
<Grid.Resources>
<c:Round x:Key="round"/>
</Grid.Resources>
<Grid.DataContext>
<Binding Source=" {StaticResource round}" />
</Grid.DataContext>
<TextBlock x:Name="tbTime" HorizontalAlignment="Left" Margin="108,202,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top"/>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="123,86,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
<TextBlock x:Name="roundNumber" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="{Binding Path=Number}"/>
</Grid>
</Window>
Round.cs:WPF:爲什麼我不能綁定數據?
using GuessFigure.Model.Factory;
using Ninject;
using Ninject.Modules;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Ninject.Planning.Bindings;
namespace GuessFigure.Model
{
/// <summary>
/// 回合
///
/// 每回合限時30s,超時直接進入下一回合
///
/// 題目(數字)由FigureFactory類生產
/// </summary>
///
class Round
{
/// <summary>
/// 回合數
///
/// 一共五回合,每回合出一道猜數字的題目
/// </summary>
internal int Number { get; } = 1;
/// <summary>
/// 生產題目的工廠
/// </summary>
private FigureFactory figureFactory;
[Inject]
internal void SetFigureFactory(FigureFactory figureFactory)
{
this.figureFactory = figureFactory;
}
/// <summary>
/// 調用<see cref=">FigureFactory"/>
/// </summary>
/// <returns>
/// 當前回合的題目。
/// </returns>
public int[] GetCurrentRoundFigures()
{
return figureFactory.Produce(Number);
}
}
class RoundModule : NinjectModule
{
public override void Load()
{
Bind<FigureFactory>().To<FigureFactoryRound1>().When(request=>request.ParentRequest.Target.Type.GetField("number").Equals(1));
Bind<FigureFactory>().To<FigureFactoryRound2>().When(request => request.Target.Type.GetField("number").Equals(2));
Bind<FigureFactory>().To<FigureFactoryRound3>().When(request => request.Target.Type.GetField("number").Equals(3));
Bind<FigureFactory>().To<FigureFactoryRound4>().When(request => request.Target.Type.GetField("number").Equals(4));
Bind<FigureFactory>().To<FigureFactoryRound5>().When(request => request.Target.Type.GetField("number").Equals(5));
}
}
}
我要上課Round
的財產Number
綁定到第二TextBlock
在Grid
,並展示給用戶。但是,我做了這些代碼後沒有任何顯示。
我的代碼有什麼問題?
System.Windows.Data Error: 40 : BindingExpression path error: 'Number' property not found on 'object' ''String' (HashCode=-1455514144)'. BindingExpression:Path=Number; DataItem='String' (HashCode=-1455514144); target element is 'TextBlock' (Name='roundNumber'); target property is 'Text' (type 'String')
相關的問題可能會有幫助:WPF/XAML Property not found on 'object'
您可以在運行應用程序時檢查輸出窗口是否存在綁定錯誤? –
@VidasVasiliauskas哦謝謝,輸出窗口被其他窗口覆蓋,所以我沒有發現輸出窗口中有錯誤。 – guo
'Number'不公開,'Round'不實現'INotifyPropertyChanged'(如果你想在初始綁定後更新值) –