第一次真正使用 WPF - 我想我會嘗試重新制作我在 Java 中所做的一些事情。我正在嘗試將彈出視窗上 TextBlock 的 Text 值系結到在后端設定的內容,因此我可以使用一種處理程式方法在所述彈出視窗上顯示任何訊息。我一直在嘗試多種不同的路線,例如將其完全系結到 cs 而不是 XAML 中,如下所示:
<--XAML-->
<Popup Margin="89,75,0,0" Name="verif_popup" HorizontalAlignment="Left" VerticalAlignment="Top" IsOpen="False" PopupAnimation="Slide" Placement="Center" Width="100" Height="100" Grid.Column="1">
<Popup.Effect>
<BlurEffect/>
</Popup.Effect>
<Canvas Background="Azure">
<TextBlock Name="VerifTextBlock"/>
</Canvas>
</Popup>
<--CS-->
private void SmallPopupHandler(string text)
{
Binding binding = new("Text")
{
Source = text
};
VerifTextBlock.SetBinding(TextBlock.TextProperty, binding);
verif_popup.IsOpen = true;
}
但它不喜歡字串不是 TextBlock 屬性的事實,我有點知道這行不通,但對我來說,這似乎是最合乎邏輯的。我似乎也沒有辦法將其轉換為它,而且我沒有心情制作我自己的依賴屬性 rn...我嘗試的下一件事是將值系結到類中的一個欄位,但我剛剛得到一個stackoverflow錯誤(哈哈很好)
<--XAML-->
<Popup Margin="89,75,0,0" Name="verif_popup" HorizontalAlignment="Left" VerticalAlignment="Top" IsOpen="False" PopupAnimation="Slide" Placement="Center" Width="100" Height="100" Grid.Column="1">
<Popup.Effect>
<BlurEffect/>
</Popup.Effect>
<Canvas Background="Azure">
<Canvas.DataContext>
<local:MainWindow/>
</Canvas.DataContext>
<TextBlock Name="VerifTextBlock" Text="{Binding Popup_message}"/>
</Canvas>
</Popup>
<--CS-->
public partial class MainWindow : Window
{
public string? Popup_message { get; set; }
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
我還嘗試制作一個介面類,看看這是否可以解決stackoverflow錯誤(哈哈),但我相信你現在已經猜到了,那也不起作用......
有點拉我的頭發,所以任何幫助將不勝感激!提前致謝!
uj5u.com熱心網友回復:
您可以按照@Clemens 的建議直接設定Text屬性:VerifTextBlock
private void SmallPopupHandler(string text)
{
VerifTextBlock.Text = text;
verif_popup.IsOpen = true;
}
如果您出于某種原因確實想使用系結,請洗掉系結路徑。這應該有效:
private void SmallPopupHandler(string text)
{
Binding binding = new()
{
Source = text
};
VerifTextBlock.SetBinding(TextBlock.TextProperty, binding);
verif_popup.IsOpen = true;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/482832.html
