WebHU - Programozási kérdések és válaszok

Módosítsa a kötést, ha az érték üres

Meg akarom változtatni a kötést, ha az érték null vagy üres.

Ezzel a példával magyarázom:

List<test> list = new List<test>();
list.Add(new test { Name1 = "Bill", Name2 = "Jack" });
list.Add(new test { Name1 = "", Name2 = "Adam" });
TestDataGrid.ItemsSource = list;

XAML

<DataGridTextColumn Header="Name" Binding="{Binding Name1}" />

ebben az esetben a következőket mutatja:

Bill

""

Azt szeretném, ha a keresztnév nulla vagy üres, akkor a Name2 jelenik meg

Bill

Adam

más módon szeretném csinálni:

<DataGridTextColumn Header="Name" Binding="if({Binding Name1} == null)
                                  {Binding Name2} else {Binding Name1}   " />

szerkesztés

Szerintem a Converter megoldja, de nem tudom elküldeni a Name2-t az érték megváltoztatásához, ha a Name1 null

24.04.2014

Válaszok:


1

Létrehoznék egy új ingatlant:

public string Name { get { return string.IsNullOrEmpty(Name1) ? Name2 : Name1; } }

<DataGridTextColumn Header="Name" Binding="{Binding Name}" />
24.04.2014

2

Ehhez egy PriorityBinding használható. Több kötést kísérel meg, amíg az egyik nem sikerül. Az UnsetValue értéket visszaadó konverter sikertelennek minősül kötés, így használhat egyet, például:

public class EmptyToUnsetConverter : IValueConverter {
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
        if (string.IsNullOrEmpty(value as string))
            return DependencyProperty.UnsetValue;

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
        return DependencyProperty.UnsetValue;
    }
}

És alkalmazza minden kötésre:

<DataGridTextColumn Header="Name">
    <DataGridTextColumn.Binding>
        <PriorityBinding>
            <Binding Path="Name1" Converter="{StaticResource EmptyToUnsetConverter}" />
            <Binding Path="Name2" Converter="{StaticResource EmptyToUnsetConverter}" />
        </PriorityBinding>
    </DataGridTextColumn.Binding>
</DataGridTextColumn>

Ez hasznosabb lenne, ha különböző típusú kötésekkel vagy különböző forrásokból származó kötésekkel dolgozna és így tovább. A nevek gyűjteményét egyszerűen becsomagolhatja egy másik tulajdonsággal, ahogy azt mások mutatták.

24.04.2014

3

Talán az lenne a legegyszerűbb megoldás, ha mondjuk hozzáadunk egy egyéni tulajdonságot DisplayName, és csak kódot írunk neki, hogy Get()?

24.04.2014

4
  • Én a ElementAtOrDefault(n)-t használnám a Skip(n).FirstOrDefault() helyett. Tisztábbnak tűnik IMO 24.04.2014
  • @TimS. szép! Nem tudtam az ElementAtOrDefault-ról 24.04.2014
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..