c# - प्रिज़ 6.2 में अगली पंक्ति में पाठ को स्थानांतरित करने के लिए क्या मैं टेक्स्ट-रैपिंग मोड को एक लंबी-पाठ मेसेज के लिए सेट कर सकता हूं? मोडल संवाद?



wpf mvvm (1)

कभी-कभी मोडल संवाद के लिए अधिसूचना संदेश का पाठ बहुत लंबा है, जैसा कि आप नीचे दिए गए चित्र पर देख सकते हैं। यह कस्टम मोडल संवाद नहीं है, लेकिन सरल अधिसूचना मोडल संवाद है जिसमें बहुत लंबा टेक्स्ट मैसेज है। यह अपवाद त्रुटि संदेश है जो कि मेडबस प्रोटोकॉल लाइब्रेरी द्वारा निर्मित है जिसका उपयोग मैं अपने अनुप्रयोग में करता हूं। लेकिन SQL सर्वर अपवादों में त्रुटियों के बारे में बहुत लंबा पाठ संदेश भी हो सकता है। डिफ़ॉल्ट रूप से, प्रिज़्म 6.2 मोडल अधिसूचना डायलॉग कोई भी लपेटा हुआ पाठ प्रदर्शित नहीं करता है। इसके परिणामस्वरूप, मोडल डायलॉग बहुत लंबा है और त्रुटि संदेश के सभी पाठ को नहीं रखा जाता है और संवाद में प्रदर्शित किया जाता है। नीचे इस मोडल संवाद के लिए एक्सएएमएल मार्कअप है:

<prism:InteractionRequestTrigger SourceObject="{Binding NotificationRequest, Mode=OneWay}">
    <prism:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True"/>
</prism:InteractionRequestTrigger>

और नीचे इस संवाद के लिए देखें मॉडल C # -code है:

public InteractionRequest<INotification> NotificationRequest { get; private set; }

public String NotificationStatus
{
    get { return this._notificationStatus; }
    set { SetProperty(ref this._notificationStatus, value); }
}

कोड का फोलिंग लाइन दृश्य मॉडल कन्स्ट्रक्टर से है:

this.NotificationRequest = new InteractionRequest<INotification>();

और निम्नलिखित मोडल अधिसूचना संवाद प्रदर्शित करने वाला तरीका है:

private void raiseNotification(string message, string caption)
{
    this.NotificationRequest.Raise(
           new Notification { Content = message, Title = caption },
           n => { this.NotificationStatus = "The user was notified."; });
}

प्रिज़ 6.2 में अगली पंक्तियों को पाठ स्थानांतरित करने के लिए क्या मैं टेक्स्ट-रैपिंग मोड को लंबे टेक्स्ट मैसेज (XAML में या दृश्य मॉडल में) के लिए सेट कर सकता हूं। मोडल संवाद?


आप PopupWindowAction अंदर किसी भी दृश्य को दिखाना चाहते हैं, बस PopupWindowAction सामग्री जोड़ें:

<prism:InteractionRequestTrigger SourceObject="{Binding NotificationRequest, Mode=OneWay}">
    <prism:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True">

        <prism:PopupWindowAction.WindowContent>
            <views:MyFancyErrorPopup/>
        </prism:PopupWindowAction.WindowContent>        

    </prism:PopupWindowAction>
</prism:InteractionRequestTrigger>  

अब MyFancyErrorPopup आपके त्रुटि संदेश को बहु-पंक्ति पाठ बॉक्स के रूप में दिखा सकता है या आप जो भी चाहें ...

संपादित करें:

<UserControl x:Class="ClientModule.Views.MyFancyErrorPopup"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:prism="http://prismlibrary.com/"
     prism:ViewModelLocator.AutoWireViewModel="True"
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300">
    <StackPanel Orientation="Vertical">
        <TextBlock Text={Binding Message}" TextWrapping="Wrap"/>
        <Button Content="Ok" Command="{Binding OkCommand}"/>
    </StackPanel>
</UserControl>


class MyFancyErrorPopupViewModel : BindableBase, IInteractionRequestAware
{
    public MyFancyErrorPopupViewModel()
    {
        OkCommand = new DelegateCommand( OnOk );
    }

    public DelegateCommand OkCommand
    {
        get;
    }

    public string Message
    {
        get { return (_notification?.Content as string) ?? "null"; }
    }

    #region IInteractionRequestAware
    public INotification Notification
    {
        get { return _notification; }
        set
        {
            SetProperty( ref _notification, value as Notification );
            OnPropertyChanged( () => Message );
        }
    }

    public Action FinishInteraction
    {
        get;
        set;
    }
    #endregion

    #region private
    private Notification _notification;

    private void OnOk()
    {
        FinishInteraction();
    }
    #endregion
}




prism