मेरे पास टेक्स्टबॉक्स है जिसे क्लियरफिल्टर बटन पर क्लिक करने पर साफ करना होता है। लेकिन स्ट्रिंग असाइन करके इसे साफ़ नहीं किया जा रहा है। खाली।

एक्सएएमएल फ़ाइल:

    <DataTemplate x:Key="FreeTextFilterTemplate">
    <StackPanel Orientation="Vertical">
        <Separator Style="{StaticResource SeparatorStyle}" Margin="5,10"/>
        <Expander Header="{Binding FilterName}" FontWeight="Bold" IsExpanded="True" Margin="10,5" Style="{StaticResource ReversedExpanderStyle}">
            <TextBox FontWeight="Normal" Margin="0,5,0,0" Text="{Binding FilterTextValue, Mode = TwoWay, UpdateSourceTrigger = PropertyChanged}" MaxLength="{Binding FilterMaxLength}" 
                    helpers:TextBoxExtension.ValidationType="{Binding TextBoxValidateType}">     
            </TextBox>
        </Expander>
    </StackPanel>
</DataTemplate>

व्यू मॉडल

    private string _filtTextValue;

    public string FilterTextValue
    {
        get => _filtTextValue;
        set
        {
            if (_filtTextValue != value)
            {
                _filtTextValue = value;
                RaisePropertyChangedEvent(FilterTextValue);
            }
        }
    }

     private void ClearSearchFilterModelData()
    {

        foreach (var filtType in SelectedCategory.Filters)
        {
            {
                if (string.Equals(InventoryFilterNameEnum.Description.ToString(), filtType.FilterName.Replace(" ", string.Empty)))
                {

                    if (!string.IsNullOrEmpty(filtType.FilterTextValue))
                    {

                        filtType.FilterTextValue = string.Empty;
                    }
                }

टेक्स्टबॉक्स के अलावा अन्य नियंत्रण साफ़ हो रहे हैं।

     public void ButtonClickCommand(object parameter)
    {

        switch (parameter.ToString().ToLower())
        {
            case "clear_filter":
                ClearFilter();  //optical-932
                break;
            case "close":
                Close();
                break;
            case "search_filter":
                GetInventoryFilterData();
                break;
            case "printlabels": //Optical-946
                ShowPrintLabelsLegacy();
                break;
        }
    }

     private void ClearFilter()    //optical-932
    {
       SelectedCategory = Categories.FirstOrDefault(x => x.CategoryId == InventoryConstants.CATEGORY_ID_FRAMES);
        ClearFiltersOnSelectedCategory();
        ItemCount = 0;
    }

     private void ClearFiltersOnSelectedCategory()
    {
        ClearSearchFilterModelData();
    }

नियंत्रण अगर स्थिति में प्रवेश करता है, संपत्ति में जाता है, लेकिन यह खिड़की में प्रतिबिंबित नहीं होता है।

0
user3422209 8 नवम्बर 2019, 12:25
साफ़ करें बटन के लिए कार्रवाइयां दिखाएं.
 – 
Adam Jachocki
8 नवम्बर 2019, 12:27
FilterTextValue, ViewModel या SelectedCategory.Filters में है?
 – 
Aakanksha
8 नवम्बर 2019, 12:29
ऐसा लगता है कि आप सत्यापन का उपयोग कर रहे हैं। क्या आपने जांच की है कि क्या आपका सत्यापन संपत्ति को string.Empty पर सेट होने से रोकता है? आपको अधिक कोड प्रदान करना चाहिए, उदाहरण के लिए, टेम्प्लेट की गई वस्तु क्या है? मुझे दो FilterTextValue गुण दिखाई दे रहे हैं लेकिन कोई स्पष्टीकरण नहीं है। संदर्भ स्पष्ट नहीं है जो धारणाओं की ओर ले जाता है।
 – 
BionicCode
8 नवम्बर 2019, 12:52
स्ट्रिंग का उपयोग करने के बजाय। उदाहरण के लिए कुछ यादृच्छिक प्रयास करें। डॉलर चिह्न, अस्थायी रूप से, यह देखने के लिए कि टेक्स्टबॉक्स डॉलर चिह्न के साथ पॉप्युलेट हो जाता है या नहीं?
 – 
Decoder94
8 नवम्बर 2019, 15:53

2 जवाब

सबसे बढ़िया उत्तर

मुझे समाधान मिल गया। FilterTextValue को दोहरे उद्धरण चिह्नों में निर्दिष्ट करता है।

    public string FilterTextValue
    {
        get => _filtTextValue;
        set
        {
            if (_filtTextValue != value)
            {
                _filtTextValue = value; 
                RaisePropertyChangedEvent("FilterTextValue");
            }
        }
    }
0
user3422209 9 नवम्बर 2019, 08:49

सुनिश्चित करें कि आप सामग्री के बजाय RaisePropertyChangedEvent में संपत्ति का नाम पास कर रहे हैं।

   public string FilterTextValue
{
    get => _filtTextValue;
    set
    {
        if (_filtTextValue != value)
        {
            _filtTextValue = value; 
//Here  >>>RaisePropertyChangedEvent(FilterTextValue);
        }
    }
}
0
Mateus Avelar 8 नवम्बर 2019, 15:53