Şu anda bir sohbet istemcisi üzerinde çalışıyorum ve istemciyi Windows formlarından (formlar boktan gibi) WPF'ye değiştirdim. Bir sohbet kutusunu gerçekleştirmek için hangi kontrolün kullanılabileceğinden emin değilim. Bir TextBox alabilirdim ancak bu, dolu olduğunda tam içeriği göstermeyecek. Ayrıca bir ListBox kullanmayı denedim ama öğeler eklemeye çalıştığımda görüntülenmiyor. Ben ona içerik eklemek için bu kodu kullandı:WPF Sohbet kutusu kontrolü
internal void AddMessage(string message)
{
listBox_messages.Items.Add(message);
listBox_messages.Items.Refresh();
}
hangi denetim bu amaç için iyi olurdu herkes bilir mu?
Yardımlarınız için teşekkürler!
Düzelt: Bunun için bir TextBox uygulayıp devre dışı bıraktım. Ancak bu yönteme eklediğim metin gösterilmiyor. Benim sınıfı:
using System.ComponentModel;
using System.Windows;
namespace Chat_Client
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
/// <summary>
/// MainWindow constructor
/// </summary>
public MainWindow()
{
InitializeComponent();
textBox_messages.AppendText("Test" + "\n");
textBox_messages.AppendText("Test" + "\n");
textBox_messages.AppendText("Test" + "\n");
Closing += OnWindowClosing;
}
private void OnWindowClosing(object sender, CancelEventArgs e)
{
Program.Shutdown();
}
private void button_connect_Click(object sender, RoutedEventArgs e)
{
if(Program.Connected)
{
Program.Disconnect();
}
else
{
Program.Connect();
}
}
private void button_sendMessage_Click(object sender, RoutedEventArgs e)
{
}
internal void AddMessage(string message)
{
textBox_messages.AppendText(message + "\n");
}
}
}
dizeleri gösterilmektedir testi ama yöntem AddMessage tarafından eklenen metin değildir. Yöntemin çağrıldığını doğrulayabilirim, sadece bu yöntem içinde bir kesme noktasıyla kontrol ettim. Bunun nasıl olabileceğine dair bir ipucu var mı?
Tercih edilen WPF yolu, doğrudan UI'yi işlemek yerine veri bağlama (MVVM) kullanmaktır. Mesajları görüntülemek için ControlTemplate ile ListBox'a sahip olabilirsiniz. Bu [örnek] (http://wblum.org/listbind/net3/index.html) yapmaya çalıştığınız şeye benzer. –
Bu koddaki tüm bu şeyleri arkana koymamalısınız. Bunun yerine, görünüm modellerini kullanın ve bağlamaları ve komutları kullanarak görünümleri ve görünüm modellerini bağlayın. –
Peki ben WPF için yeni ve bu tür modelleri ile biraz bunalmış değilim. Sadece WPF ile Formlar ile değil, aptal ve primit bir form istiyorum. – chris579