আনুভূমিকভাবে তালিকাবক্সের পূর্ণ প্রস্থকে প্রসারিত করতে একটি তালিকাবক্স আইটেম টেম্পলেট কীভাবে পাবেন?


356

আমি চাইলে লিস্টটাইমগুলি তাদের কমলা ব্যাকগ্রাউন্ডের সাথে তালিকাবক্সের পুরো প্রস্থের সাথে প্রসারিত করতে চাই।

বর্তমানে এগুলি কেবল ফার্স্টনেম + লাস্টনামের মতোই প্রশস্ত।

আমি আমার প্রতিটি উপাদান সেট করতে পেরেছি: HorizontalAlignment = "স্ট্রেচ"।

আমি চাইছি যে লাস্টবক্স আইটেমগুলির পটভূমিটি প্রসারিত হয় কারণ ব্যবহারকারী তালিকার বাক্সটি প্রসারিত করে যাতে আমি নিখুঁত মান রাখতে চাই না।

তালিকা বাক্সের আইটেমের পটভূমির রঙ তালিকাবক্সের প্রস্থ পূরণ করতে আমাকে কী করতে হবে?

<Window x:Class="TestListBoxSelectedItemStyle.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:TestListBoxSelectedItemStyle"
    Title="Window1" Height="300" Width="300">

    <Window.Resources>
        <local:CustomerViewModel x:Key="TheDataProvider"/>

        <DataTemplate x:Key="CustomerItemTemplate">
            <Border CornerRadius="5" Background="Orange" HorizontalAlignment="Stretch" Padding="5" Margin="3">
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" Width="Auto">
                    <TextBlock HorizontalAlignment="Stretch">
                    <TextBlock.Text>
                        <MultiBinding StringFormat="{}{0} {1}">
                            <Binding Path="FirstName"/>
                            <Binding Path="LastName"/>
                        </MultiBinding>
                    </TextBlock.Text>
                    </TextBlock>
                </StackPanel>
            </Border>
        </DataTemplate>

    </Window.Resources>

    <Grid>
        <ListBox ItemsSource="{Binding Path=GetAllCustomers, Source={StaticResource TheDataProvider}}"
                 ItemTemplate="{StaticResource CustomerItemTemplate}"/>
    </Grid>
</Window>

উত্তর:


468

আমি নিশ্চিত এটি একটি সদৃশ, তবে আমি একই উত্তর দিয়ে একটি প্রশ্ন খুঁজে পাচ্ছি না।

যোগ HorizontalContentAlignment="Stretch"আপনার তালিকা বাক্সে করতে। কৌতুক করা উচিত। অটো-সম্পূর্ণ সম্পর্কে কেবল সতর্কতা অবলম্বন করুন কারণ HorizontalAlignmentভুল করে পাওয়া এত সহজ ।


1
@ অ্যাগিল জেডি, আপনি যখন কাস্টম লিস্টবক্স আইটেমগুলি ব্যবহার করবেন তখন কী কোনও সমাধান সম্পর্কে জানেন? আমি নিজেই এই ইস্যুতে চলছে।
Eldre

11
আসলে এই সমাধানটি কোনও কারণে সিলভারলাইটে কাজ করে না। অন্যদিকে গ্যাব্রিয়েলের সমাধানটি করে
তিথিপথ

6
এটি উইনআরটি লিস্টভিউ নিয়ন্ত্রণগুলিতে কাজ করে না। আমি ইতিমধ্যে এটি চেষ্টা করেছি।
uSeRnAmEhAhAhAhAhAhA

3
এটি কাস্টম তালিকায় দুর্দান্ত কাজ করে (উইন্ডোজ, সিলভারলাইট নয়), এক্সএএমএল লেখার সময় অটো সম্পূর্ণর সাথে সতর্ক থাকুন। আপনি যদি "হরাইজ .." লিখেন তবে আপনি "অনুভূমিক অ্যালাইনমেন্ট" পাবেন "অনুভূমিক কনটেন্টএলাইনমেন্ট" নয়। প্রথম পরামর্শটি নির্বাচন করা বেশ সহজ, যেহেতু উভয়ই "স্ট্রেচ" ব্যবহার করছেন।
জারলে বির্নবেথ

1
আমি যদি কাস্টম আইটেমের প্রস্থকে অটোতে সেট করি তবে কাস্টম আইটেমগুলি আমার পক্ষে কাজ করে।
লেন্সফ্লেরে

646

আমি এখানে আরও একটি সমাধান খুঁজে পেয়েছি , যেহেতু আমি উভয় পোস্টে দৌড়েছি ...

এটি মাইলস উত্তর থেকে:

<ListBox.ItemContainerStyle> 
    <Style TargetType="ListBoxItem"> 
        <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> 
    </Style> 
</ListBox.ItemContainerStyle> 

এটি আমার পক্ষে কাজ করেছে।


@ ক্যামেরনম্যাকফারল্যান্ড কমপক্ষে আমার ক্ষেত্রে সিলভারলাইটের কারণ হ'ল আইটি অ্যাডমিন স্টাফরা কীভাবে সক্রিয় ডিরেক্টরি ব্যবহার করে ডাব্লুপিএফ / উইনফর্ম অ্যাপ্লিকেশন স্থাপন করবেন তা নির্ধারণ করতে পারেনি এবং আমরা একটি পরিষ্কার পরিচ্ছন্নতার পরিস্থিতি চেয়েছিলাম যা আমাদের উপর নির্ভর করে না স্নিকারনেটিং আপডেট।
রিচার্ড বি

@ রিচার্ডবি লোল আমার মন্তব্য সিলভারলাইটে আরও বেশি পরিচালিত হয়েছিল, কেন ডাব্লুপিএফের তুলনায় রৌপ্য আলো আলাদা হওয়া উচিত এবং একটি ভাঙা টেমপ্লেট থাকতে হবে।
ক্যামেরন ম্যাকফারল্যান্ড 14

@ ক্যামেরনম্যাকফারল্যান্ড আহ ... কোনও উদ্বেগ নেই। সিলভারলাইট অ্যাপ্লিকেশনটি করার পরে এবং সার্ভিস রেফারেন্স.ক্লিয়েন্টকনফিগ ফাইলের সাথে লড়াই করার পরে, আমি সেট করে রেখেছি যে আমি আবার কোনও সিলভারলাইট অ্যাপ্লিকেশন বিকাশ করে (প্লেগের মতো) এড়াতে চাই। এটি একটি দুর্দান্ত ধারণা ছিল, তবে কেবল চিত্তাকর্ষক নয়।
রিচার্ড বি

1
এটি তালিকার মধ্যে একটি ডেটা টেম্পলেটটির জন্য কাজ করার জন্য দেখুন ভিউ: <তালিকাগুলি I .আইটেমকন্টেইনার স্টাইল>
ক্রিস্টোফার কুক

ত্রুটি: বাইন্ডিংএক্সপ্রেস পাথ ত্রুটি: 'প্রস্থ' সম্পত্তি প্রকল্পে পাওয়া যায় নি। বাইন্ডিং এক্সপ্রেশন: পাথ = 'প্রস্থ' ডেটা আইটেম = প্রজেক্ট C কাস্টম এলেমেন্ট, প্রজেক্ট.উন্ডোফোন, সংস্করণ = 1.0.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিককি টোকেন = নাল '; টার্গেট এলিমেন্টটি হ'ল 'উইন্ডোজ.ইউআই.কমল.কন্ট্রোলস গ্রিড' (নাম = 'নাল'); টার্গেট সম্পত্তি হ'ল 'প্রস্থ' (টাইপ 'ডাবল')
ব্ল্যাক সিড

72

যদি আপনার আইটেমগুলি এর চেয়ে আরও বিস্তৃত হয় তবে ListBoxএখানে অন্য উত্তরগুলি সহায়তা করবে না: ItemTemplateঅবশেষে থাকা আইটেমগুলি এর চেয়ে বেশি প্রশস্ত ListBox

আমার পক্ষে যে কাজটি ঠিক করা হয়েছিল তা হ'ল দিগন্তিক স্ক্রোলবারটি অক্ষম করা, যা দৃশ্যত, সমস্ত আইটেমের ধারককে কেবলমাত্র তালিকার বাক্সের মতোই প্রশস্ত থাকতে বলে।

সুতরাং তালিকাবক্স আইটেমগুলি তালিকা বাক্সের মতো বিস্তৃত, সেগুলি ছোট হোক এবং প্রসারিত হওয়া দরকার, বা বৃহত্তর এবং মোড়কের প্রয়োজনের জন্য সম্মিলিত ফিক্সটি নিম্নরূপ:

<ListBox HorizontalContentAlignment="Stretch" 
         ScrollViewer.HorizontalScrollBarVisibility="Disabled">

( স্ক্রোল বার ধারণার জন্য ক্রেডিট )


0

যেহেতু সীমানাটি কেবলমাত্র দর্শনের জন্য ব্যবহৃত হয়, তাই আপনি এটিকে তালিকাবক্স আইটেমের কন্ট্রোলটেম্পলেটটিতে রাখতে এবং সেখানে বৈশিষ্ট্যগুলি সংশোধন করতে পারেন। আইটেম টেম্পলেটটিতে আপনি কেবল স্ট্যাকপ্যানেল এবং টেক্সটব্লক রাখতে পারেন। এই পদ্ধতিতে কোডটিও পরিষ্কার থাকে, যেমন উপস্থিতি নিয়ন্ত্রণের নিয়ন্ত্রণ হিসাবে নিয়ন্ত্রণ নিয়ন্ত্রণ করা হবে এবং প্রদর্শিত ডেটা ডেটা টেম্প্লেটের মাধ্যমে নিয়ন্ত্রণ করা হবে।


0

আমার জন্য ফিক্স সেট সম্পত্তি ছিল HorizontalAlignment="Stretch"উপর ItemsPresenterভিতরে ScrollVieweR ..

আশা করি এটি কাউকে সহায়তা করবে ...

<Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBox">
                    <ScrollViewer x:Name="ScrollViewer" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" Padding="{TemplateBinding Padding}" HorizontalAlignment="Stretch">
                        <ItemsPresenter  Height="252" HorizontalAlignment="Stretch"/>
                    </ScrollViewer>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

0

আমারও একই সমস্যা ছিল, তাত্পর্যপূর্ণ কাজ হিসাবে, কত প্যাডিং যুক্ত হচ্ছে তা নির্ধারণ করার জন্য আমি মিশ্রণটি ব্যবহার করেছি। আমার ক্ষেত্রে এটি 12 ছিল, সুতরাং আমি এ থেকে মুক্তি পেতে নেতিবাচক মার্জিন ব্যবহার করেছি। এখন সবকিছুই এখন সঠিকভাবে কেন্দ্র করা যায়

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.