আমি কীভাবে এক্সএএমএল ডেটাগ্রিড কলামগুলি পুরো ডেটাগ্রিড পূরণ করব?


117

আমি এক্সএএমএল (সিলভারলাইট নয়) আকারে পরিবর্তনযোগ্য কলামগুলির সাথে ডেটাগ্রিড ব্যবহার করছি, যদি ব্যবহারকারী স্ক্রিনটির আকার পরিবর্তন করে তবে ডেটাগ্রিড প্রসারিত হবে।

বর্তমানে যদি সমস্ত ডেটাগ্রিড কলামের প্রস্থ ডেটাগ্রিডের প্রস্থের চেয়ে কম হয় তবে আমি একটি অতিরিক্ত "কলাম" উপস্থিত করব যা অনিচ্ছাকৃত এবং উদ্দেশ্যহীন।

বাকী সমস্ত স্থান পূরণ করার জন্য কীভাবে কীভাবে একটি কলামকে সর্বদা আকার পরিবর্তন করতে হয় তা জানেন?

উত্তর:


248

আপনি যদি Width="*"কলামটি ব্যবহার করেন তবে উপলব্ধ স্থানটি প্রসারিত করতে ভরাট হবে।

আপনি যদি চান যে সমস্ত কলামগুলি গ্রিডকে বিভক্ত করতে একইভাবে এটি সমস্ত কলামে প্রয়োগ করুন। যদি আপনি কেবল চান যে বাকি স্থানটি পূরণ করুন কেবল সেই কলামে এটি প্রয়োগ করুন বাকী "অটো" বা নির্দিষ্ট প্রস্থের সাথে।

আপনি Width="0.25*"যদি কলামটি উপলব্ধ প্রস্থের 1/4 অংশ নিতে চান তবে আপনি (উদাহরণস্বরূপ ) ও ব্যবহার করতে পারেন।


2
এবং আমি কীভাবে অনুরূপ জিনিস ব্যবহার করব AutoGenerateColumns="True"?
21:51

1
@ জাভাপাওয়ার্ড - আমি আপনার নিজের প্রশ্ন জিজ্ঞাসা করার পরামর্শ দিচ্ছি, এটিকে উল্লেখ করে।
ক্রিসএফ

16
@ জাভাপাওয়ার্ড<DataGrid AutoGenerateColumns="True" ColumnWidth="*" ItemsSource={Binding} />
জেভিয়ার

11
@ মোহাম্মদস্যাখারসওয়ান এটি ডেটাগ্রিডের পক্ষে কাজ করে। উভয় ColumnWidth="*"উপর DataGrid এবং Width="*"indivdual কলাম উপর পছন্দসই প্রভাব আছে
স্টিভ

1
একটি ত্রুটি স্টিং দেয় '*'
Co2f2e

18

আপনার ডেটাগ্রিড এমন কিছুর জন্য Widthসেট করেছে তা নিশ্চিত করুন {Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window,AncestorLevel=1}}

সেই মতো, আপনার সেটিং Width="*"উপর অ্যাট্রিবিউট DataGrid.Columns/DataGridXXXXColumnউপাদান কাজ করা উচিত।


9

যেমনটি উল্লেখ করা হয়েছে, ColumnWidth="*"এক্সএএমএল-তে একটি ডেটাগ্রিডের জন্য পুরোপুরি ভাল কাজ করেছে।

আমি এটি এই প্রসঙ্গে ব্যবহার করেছি:

<DataGrid ColumnWidth="*" ItemsSource="{Binding AllFolders, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

7

কলামগুলির Widthসম্পত্তিটিকে আনুপাতিক প্রস্থ হিসাবে সেট করুন*


3

আমার 2 সেন্ট ->

পার্টিতে খুব দেরি

ডেটাগ্রিড -> কলাম -> প্রস্থ = "*" কেবল তখনই কাজ করে যদি ডেটাগ্রিডের প্যারেন্ট পাত্রে স্থির প্রস্থ থাকে।

উদাহরণস্বরূপ: আমি গ্রিডে ডেটাগ্রিড রেখেছি -> কলাম যার প্রস্থ = "অটো" তার পরে প্রস্থ = "*" ডেটাগ্রিডে কাজ করে না তবে আপনি গ্রিড -> কলাম প্রস্থ = "450" ​​গড় স্থির করে থাকেন তবে এটি ঠিক কাজ করে


2

একই থিমের আরও একটি স্পিন:

protected void OnWindowSizeChanged(object sender, SizeChangedEventArgs e)
{
    dataGrid.Width = e.NewSize.Width - (e.NewSize.Width * .1);

    foreach (var column in dataGrid.Columns)
    {
       column.Width = dataGrid.Width / dataGrid.Columns.Count;
    }
 }

1

আমি একটি HorizontalAlignment = "Center" (ডিফল্টটি "স্ট্রেচ") যুক্ত করেছি এবং এটি আমার সমস্যার সমাধান করেছে কারণ এটি প্রয়োজন হিসাবে ডেটাগ্রিডকে আরও প্রশস্ত করেছে। (আপনার যদি থাকে তবে ডেটাগ্রিডের প্রস্থের সেটিংস সরিয়ে ফেলা হয়েছে))

এখানে চিত্র বর্ণনা লিখুন


নির্বাচিত উত্তর এবং এটির সাথে একত্রিত হয়ে এটি আমার জন্য সমস্যার সমাধান করেছে। আমার নিজের ডেটাগ্রিডের প্রস্থ অপসারণ করা দরকার। ধন্যবাদ।
ব্রায়ান হ্যারিংটন

0

এটি অবশিষ্ট স্থান নিতে xaml গ্রিডের শেষ কলামটি প্রসারিত করবে না AutoGeneratedColumns="True"


আমি কলামগুলি ডেটা গ্রিড / স্ক্রিনের পুরো প্রস্থকে বিভক্ত বা প্রসারিত না করেও অটোজিনেটের কলামগুলি সরিয়ে ফেলেছি। আমার কাছে গ্রিডের সাথে সম্পর্কিত *** "*" হতে হবে এবং কলামগুলির প্রস্থের কোনও প্রস্থ নির্দিষ্ট নেই (হয় "স্বয়ং" বা "কিছু মান")। তবে এখনও আমি সমস্যাগুলি পাচ্ছি, এখানে আমার ডিজাইনের xaml কোডটি pastie.org/10085815
GK

0

এক কলামের প্রস্থকে যে কোনও মান হিসাবে সেট করুন, যেমন প্রস্থ = "*"


0

যাঁরা সি # কাজের জন্য সন্ধান করছেন তাদের জন্য:

আপনার যদি "অটো জেনারেটেড কলামগুলি" সক্ষম করার জন্য কোনও কারণে প্রয়োজন হয় তবে একটি কাজ আপনি করতে পারেন তা হল স্বয়ংক্রিয় আকার পরিবর্তন করতে চাইলে ব্যতীত সমস্ত কলামের প্রস্থ নির্দিষ্ট করা (এটি বাকী স্থান গ্রহণ করবে না , তবে এটির আকার পরিবর্তন করবে ) কক্ষের সামগ্রী )।

উদাহরণ (dgShopppingCart আমার ডেটাগ্রিড):

dgShoppingCart.Columns[0].Visibility = Visibility.Hidden; 
dgShoppingCart.Columns[1].Header = "Qty";
dgShoppingCart.Columns[1].Width = 100;
dgShoppingCart.Columns[2].Header = "Product Name"; /*This will be resized to cell content*/
dgShoppingCart.Columns[3].Header = "Price";
dgShoppingCart.Columns[3].Width = 100;
dgShoppingCart.Columns[4].Visibility = Visibility.Hidden; 

আমার জন্য এটি একটি কর্মপরিকল্পনা হিসাবে কাজ করে কারণ যখন উইন্ডোটি সর্বাধিক করে তোলে তখন আমার ডাটাগ্রিডকে পুনরায় আকার দেওয়া দরকার ছিল।

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